Commit graph

732 commits

Author SHA1 Message Date
Navil Perez
0c39bc0ab1 DIR_METADATA: Add V2 Test Plans.
Add the default set of test rules.

V2 test plans will be verified in staging before being enabled in prod.

See go/cros-cq-test-config for more details.

BUG=b:249150178
TEST=dirmd validate

Change-Id: I3fc9f5cd31f0f76537a21efb8d9f2efcb8ab4580
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3924812
Tested-by: Navil Perez <navil@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Navil Perez <navil@google.com>
2022-11-30 01:25:57 +00:00
Yiwei Zhang
eccb7f80bb i915: avoid vertical alignment for FORMAT_BLOB
HAL_PIXEL_FORMAT_BLOB gets resolved into DRM_FORMAT_R8 with height of 1.
Avoid doing any vertical alignment for this case. Ideally we want a new
DRM_FORMAT_BLOB format.

BUG=b:255226937
TEST=atest CtsNNAPITestCases:GpuNnapiTest

Change-Id: Iea86481392b40c6c827f84323cb50450ddec03a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4035255
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chad Versace <chadversary@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-11-19 09:46:12 +00:00
David Stevens
7eb9e826a7 virtgpu_virgl: use blobs NV12 encoder input
Use blob buffers for encoder NV12 input, even when software access is
required. This is helpful for ARCVM, since the v4l2_codec2 stack
sometimes needs to do a format conversion in the guest as the
virtio-video encoder only supports NV12/I420 input.

Supporting this requires knowing the host buffer layout before creating
the blob resource. This is done by creating a temporary resource to
query the layout. To avoid the overhead of querying the host every time
a buffer is created, the allocator process keeps a cache of the most
recently used buffer formats and their host layout.

Creating temporary resources to discover host buffer parameters is a bit
of a cludge. However, since virtgpu_virgl will eventually be deprecated
in favor of virtgpu_cross_domain, a self-contained and simple approach
like this gives some nice performance gains on low end devices.

TEST=decode-edit-encode workflows
TEST=Cts{NativeHardware,Camera,Graphics,Video}TestCases on volteer
BUG=b:203380807, b:232531771

Change-Id: Ibda500862b42680ba898ba689e1600ebe5d258bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3256451
Auto-Submit: David Stevens <stevensd@chromium.org>
Reviewed-by: Lepton Wu <lepton@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: David Stevens <stevensd@chromium.org>
2022-11-16 01:37:22 +00:00
Fei Shao
fc3146f5b7 virtgpu_virgl: Fix format style
clang-format fixes the formatting in presubmit.

BUG=None
TEST=repo upload . --cbr

Change-Id: I77a958b3a2bc3e923b2ee8abc0aa322382490ec9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3998337
Commit-Queue: Fei Shao <fshao@chromium.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Tested-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Miguel Casas-Sanchez <mcasas@chromium.org>
2022-11-15 12:24:57 +00:00
Jason Macnak
29aeabedfa gralloc: Handle PixelFormat::R_8
BUG=b:258516895
TEST=cts -m CtsNativeHardwareTestCases

Change-Id: Ie68adb3e1318bdf7801277f5997548df2bb0354e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4018143
Tested-by: Jason Macnak <natsu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
2022-11-14 23:25:16 +00:00
David Stevens
bef7c87c29 virtgpu_virgl: remove unused parameter
Format is no longer used when computing virgl bind flags, so drop the
parameter.

BUG=None
TEST=compiles

Change-Id: I7c0526584c442f981aa1b109c6b785a01d1e7ddf
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4014226
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
Tested-by: David Stevens <stevensd@chromium.org>
2022-11-14 02:17:47 +00:00
Fei Shao
a375189f06 mediatek: Add MT8188G definition
To support MT8188G video pipeline.

BUG=b:256980241
TEST=emerge-geralt minigbm

Change-Id: If128d828aaae425813db283ed5aee28dcf16e753
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3998336
Tested-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
2022-11-08 17:06:15 +00:00
Fei Shao
cb639821e4 mediatek: One line per board definition
To reserve the blame history, make it easier to extend and ensure the
lines don't get too lengthy in the future.

BUG=None
TEST=emerge-geralt minigbm

Change-Id: Id176ac4b113f61472c171874884d14037591c5e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3998335
Tested-by: Fei Shao <fshao@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
2022-11-08 17:06:13 +00:00
Ikshwaku Chauhan
0b46921a79 minigbm: dri: Enabled useInvalidate for buffer invalidation.
The drivers now require a loader with a working useInvalidate hook.
If not enabled then "createNewScreen2" call will fail in mesa-22.2.0 onwards.

BUG=b:245687387
TEST= screenshot --internal /tmp/test.png
      tast run <IP> graphics.GLBench

Signed-off-by: Ikshwaku Chauhan <ikshwaku.chauhan@amd.corp-partner.google.com>
Change-Id: I0f7319fb7193be6ea938209413e8fbfe3b7f0c93
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3941506
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
2022-10-25 16:05:09 +00:00
Vipin Anand
97e07deac8 minigbm: Add tile4 support
Adding tile4 support for MTL.

BUG=b:243459433, b:243685631
TEST=emerge-rex minigbm

Change-Id: Ib66e121498b6eacc6038a6a4c392a76a104c5c2c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3841638
Tested-by: Ashutosh Kumar <ashutosh1.kumar@intel.com>
Commit-Queue: Rajat Jain <rajatja@google.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
2022-10-22 01:10:05 +00:00
Mohanram Meenakshisundaram
0377635e70 minigbm: tiling ioctls not supported based on number of fence
Set/Get tilling ioctl not supported  based on fence
availability
Refer : "https://patchwork.freedesktop.org/patch/325343/"

Driver team recommended old code flow and skip calling
get/set ioctls for Media/Graphics usecases .

BUG=b:243459433, b:243685631
TEST=emerge-rex minigbm

Change-Id: I4cfdb60b3abb6a1adcce8df8ce7d8d50adb4a0b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3841637
Commit-Queue: Rajat Jain <rajatja@google.com>
Tested-by: Ashutosh Kumar <ashutosh1.kumar@intel.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
2022-10-22 01:10:04 +00:00
Ap, Kamal
1d54c839f9 minigbm: Add MTL PCI-IDs
1) Adding MTL PCI-IDs to minigbm
2) renamed gen variable to graphics_version to allign to driver naming
convention and to adapt to upcoming split ip versions for
display/graphics/media.

BUG=b:243459433, b:243685631
TEST=emerge-rex minigbm

Change-Id: I9859fadecf737532e8f1689c1531caccf31fe212
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3841636
Tested-by: Ashutosh Kumar <ashutosh1.kumar@intel.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Rajat Jain <rajatja@google.com>
2022-10-22 01:10:02 +00:00
Yiwei Zhang
6fb145be9c Revert "mediatek: ensure stride meets Android requirement for YVU420"
This reverts commit 23d5fb3e83.

Reason for revert: breaks mtk boards with img gpu

Original change's description:
> mediatek: ensure stride meets Android requirement for YVU420
>
> Android YV12 requires "c_stride = ALIGN(stride/2, 16)", and is
reflected
> in drv_bo_from_format_and_padding.
>
> BUG=b:239243515
> TEST=build
>
> Change-Id: Ifb7641f5f818f96d40af460fc9d266cd9689f48a
> Reviewed-on:
https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3919605
> Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
> Commit-Queue: Fei Shao <fshao@chromium.org>
> Reviewed-by: Ryan Neph <ryanneph@google.com>
> Tested-by: Yiwei Zhang <zzyiwei@chromium.org>

BUG=b:251373007
BUG=b:251376604
BUG=b:251377527
BUG=b:251372443
BUG=b:251035349
BUG=b:251721989
TEST=regression fixed

Change-Id: I00b8dddd40fe313cecf99468ef97cb4064322628
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3939484
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-10-08 19:00:58 +00:00
Yiwei Zhang
b2dde01e1d mediatek: ensure total size satisfy luma padding for Sigurd based GPU
BUG=b:239243515
TEST=testGLViewLargerWidthDecodeAccuracy[40]

Change-Id: I3c172a93a85c878beb10ecc6f65ed90438c85d89
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3919606
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
Reviewed-by: Fei Shao <fshao@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-09-29 17:42:35 +00:00
Yiwei Zhang
23d5fb3e83 mediatek: ensure stride meets Android requirement for YVU420
Android YV12 requires "c_stride = ALIGN(stride/2, 16)", and is reflected
in drv_bo_from_format_and_padding.

BUG=b:239243515
TEST=build

Change-Id: Ifb7641f5f818f96d40af460fc9d266cd9689f48a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3919605
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-09-29 17:42:34 +00:00
Yiwei Zhang
fcc59f7d71 Revert "mediatek: temporarily workaround a gpu driver bug to unblock cts"
This reverts commit 64de5175a0.

BUG=b:239243515
TEST=build

Change-Id: Ia538be20966ac7a39fb9393672afdc0c96ec26a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3919604
Reviewed-by: Fei Shao <fshao@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
2022-09-29 17:42:32 +00:00
Rob Clark
99387a7176 Revert "minigbm/msm: disable UBWC for virtualization"
This reverts commit 7a1a7dbda3.

BUG=b:243681772
TEST=confirm UBWC usage in arcvm

Cq-Depend: chromium:3900312
Change-Id: I126353bd91b75b7656257da00bc6fdf7d4c17060
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3900553
Reviewed-by: Chia-I Wu <olv@google.com>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Auto-Submit: Rob Clark <robdclark@chromium.org>
Tested-by: Rob Clark <robdclark@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
2022-09-16 14:43:02 +00:00
Yiwei Zhang
8f16db9fc8 virtgpu: always make it mappable for GPU_DATA_BUFFER
Venus device memory mapping setup must succeed for AHB VkBuffer.
Meanwhile, the imported AHB can be allocated with only GPU_DATA_BUFFER
flag. So we must add mappable flag in virtgpu backends accordingly.

BUG=b:246814802
TEST=Blob_BlobTest_GpuDataBufferVertexBuffer_BLOB

Change-Id: I88f63c732d3b133daf755d73ed54578605d27112
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3896159
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olv@google.com>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Rob Clark <robdclark@chromium.org>
2022-09-15 04:52:47 +00:00
Yiwei Zhang
185a139697 mediatek: advertise fp16 and 10bit rgba as supported texture format
They are both supported on mt8192 and mt8195

BUG=b:245663059
BUG=b:245662197
BUG=b:245693521
TEST=cts

Change-Id: Ib372d08caadbae37501b801a2c6e2e12c37d1e20
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3884975
Tested-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Commit-Queue: Fei Shao <fshao@chromium.org>
Reviewed-by: Fei Shao <fshao@chromium.org>
2022-09-12 07:27:23 +00:00
Yiwei Zhang
9f1fb038de gralloc: adopt BufferUsage::FRONT_BUFFER
BUG=N/A
TEST=build

Change-Id: I9ffceb16f1a7fd93981ca9eaf72ba68baff5d24b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3852310
Reviewed-by: Jason Macnak <natsu@google.com>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-09-09 17:52:58 +00:00
Justin Green
1805193a2a platform/minigbm: Add BO_USE_TEXTURE to YUYV flags for MTK
Add BO_USE_TEXTURE to YUYV planes for Mediatek devices. This allows them
to be used as hardware overlays.

BUG=b:238137982
TEST=Tested on Asurada and Cherry

Change-Id: Ib0b6d91f64fe4e0af737594de976d5d5154e223d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3864630
Tested-by: Justin Green <greenjustin@google.com>
Commit-Queue: Justin Green <greenjustin@google.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
2022-09-02 19:03:58 +00:00
Nicholas Bishop
dbe7f03f0c virtgpu_virgl: Add basic support for modifiers
In recent kernel versions virtgpu reports support for the linear
modifier due to commit "drm: add support modifiers for drivers whose
planes only support linear layout" [1].

This causes the UI to when it calls gbm_bo_create_with_modifiers; it
hits an early return in drv_bo_create_with_modifiers due to the
virtgpu backend setting neither bo_create_with_modifiers nor
bo_compute_metadata.

Fix by adding a virgl_bo_create_with_modifiers modeled on
dumb_bo_create_with_modifiers. If the requested modifiers include
the linear modifier, pass the request on to virgl_bo_create.
Otherwise fail with EINVAL.

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8be576837b6e62b2ad0de2f9ba31cef618fa2891

BUG=b:243569755
TEST=Deploy minigbm to a reven-kernelnext VM
TEST=Restart UI, observe UI is no longer black
TEST=Logs don't show "Failed to create scanout buffer" errors

Change-Id: If8d02225a7a50600b5ae4685cc963ad391bd9bf7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3862241
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Dominik Behr <dbehr@chromium.org>
Tested-by: Nicholas Bishop <nicholasbishop@google.com>
Auto-Submit: Nicholas Bishop <nicholasbishop@google.com>
2022-08-31 02:51:09 +00:00
Justin Green
c9f6462456 platform/minigbm: Add YUY2 support for Mediatek
Add YUY2 (DRM_FORMAT_YUYV) support for Mediatek platforms. Mediatek
devices support YUY2 hardware overlays, which we would like to exploit
to reduce video frame latency.

BUG=b:238137982
TEST=Tested with atomictest on Asurada

Change-Id: I42937956cb1017fea5f8997dd38d591a1b0b80b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3846866
Reviewed-by: Rob Clark <robdclark@chromium.org>
Tested-by: Justin Green <greenjustin@google.com>
Commit-Queue: Justin Green <greenjustin@google.com>
2022-08-23 15:01:58 +00:00
Yiwei Zhang
64de5175a0 mediatek: temporarily workaround a gpu driver bug to unblock cts
BUG=b:231660103
BUG=b:239243515
TEST=android.media.cts.DecodeAccuracyTest#testGLViewLargerWidthDecodeAccuracy[40]

Change-Id: I3349497aa9d6952dd330fdb725116fcc6e50a918
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3824600
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Lepton Wu <lepton@chromium.org>
2022-08-14 07:13:34 +00:00
Yiwei Zhang
5c93742e6c mediatek: align with hardware workaround on Sigurd based GPU
BUG=b:239243515
TEST=android.media.cts.DecodeAccuracyTest#testGLViewLargerWidthDecodeAccuracy[40]

Change-Id: I7b4dcf0325e0776a2554d10898cffcc515cb8473
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3824599
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Lepton Wu <lepton@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-08-14 07:13:33 +00:00
Yiwei Zhang
ccfca97d92 cross_domain: format fix
TEST=build

Change-Id: I52c347b81ba0873139e5b63b467b4424233a5c85
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3824598
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Lepton Wu <lepton@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-08-14 07:13:32 +00:00
Chung-Sheng Wu
9af6092317 minigbm: Install minigbm_helpers.h
Install the header for others to use it.

BUG=b:175246639, b:240390351
TEST=emerge-zork minigbm

Change-Id: Ib6cc8055aaace23132634c2478ae8c586340e806
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3780065
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Chung-Sheng Wu <chungsheng@google.com>
Auto-Submit: Chung-Sheng Wu <chungsheng@google.com>
Tested-by: Chung-Sheng Wu <chungsheng@google.com>
2022-08-03 09:12:36 +00:00
Yiwei Zhang
a07201ce2e gralloc4: fix plane layout mapping for DRM_FORMAT_YVU420
In fact, the resolved format is always DRM_FORMAT_YVU420_ANDROID at
gralloc frontend upon metadata query.

DRM_FORMAT_YVU420 is only returned upon filling fourcc in native handle.

Do the fix anyway for sanity and prepare for later code cleanup.

TEST=build

Change-Id: I4c9a96d317bb458cf715364f68f1a0daead1a077
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3789650
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
2022-07-28 21:31:05 +00:00
Jason Macnak
80f664c422 minigbm: passthrough SENSOR_DIRECT_DATA via gbm frontend
BUG=b:238609372
TEST=vts -m VtsHalSensorsV2_1TargetTest

Change-Id: I37834f80d71e453e6e29b88198efc1584c109456
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3773926
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
Tested-by: Jason Macnak <natsu@google.com>
2022-07-26 23:41:35 +00:00
Jason Macnak
d0cce89e65 virtgpu_crossdomain: Allow BLOBs with SENSOR_DIRECT_DATA
BUG=b:238609372
TEST= vts -m VtsHalSensorsV2_1TargetTest

Change-Id: Id50e8057a0cc3150bb6b29bd7bdaa31fb7faa1ef
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3774935
Tested-by: Jason Macnak <natsu@google.com>
Commit-Queue: Jason Macnak <natsu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-26 23:41:34 +00:00
Rob Clark
bb62d42f28 virtgpu_crossdomain: Use guest storage when only CPU access is needed
No need to introduce host storage and mapping to the guest for buffers
that only have CPU access.  Fixes slow performance of sw encoders.

BUG=b:238158981, b:239333100
TEST=cts-tradefed run cts -m CtsVideoTestCases -t android.video.cts.VideoEncoderDecoderTest#testAvcGoog0Perf0320x0240
TEST=cts-tradefed run cts -m CtsCameraTestCases -t android.hardware.camera2.cts.RecordingTest#testSupportedVideoSizes[1]

Change-Id: Iaf88a750ae215d3a02b8415ab93be06b08a7f550
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3777563
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Rob Clark <robdclark@chromium.org>
Tested-by: Rob Clark <robdclark@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
2022-07-24 10:48:26 +00:00
Jason Macnak
98d34a82b5 virtgpu_virgl: Allow BLOBs with SENSOR_DIRECT_DATA
BUG=b:238609372
TEST= vts -m VtsHalSensorsV2_1TargetTest

Change-Id: I33d9afb41fa546c97faffdbbd996a4d65a5ee156
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3774934
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
Tested-by: Jason Macnak <natsu@google.com>
2022-07-23 06:27:03 +00:00
Jason Macnak
e8b40546ce drv/gralloc: Handle SENSOR_DIRECT_DATA usage
BUG=b:238609372
TEST=build

Change-Id: If1aefed829b69070d5f01f20e7c6961afc15cd82
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3774933
Tested-by: Jason Macnak <natsu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
2022-07-23 06:27:01 +00:00
Yiwei Zhang
bbe1fd3a8c minigbm: passthrough GPU_DATA_BUFFER via gbm frontend
This is required for modern Android atop a gralloc with the cross_domain
backend or other native backend.

BUG=b:238609372
TEST=build and AHB cts

Change-Id: Id963eeec62c4400cc009384e127c93588c99346e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3777566
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-21 05:37:37 +00:00
Rob Clark
29daef0984 msm: Handle YVU420_ANDROID and YVU420 identically
With arcvm, virtgpu_cross_domain.c in the host remaps YVU420_ANDROID to
YVU420, to avoid exposing custom DRM_FORMAT_x values in the API between
the host and guest.  Which means it expects identical behavior for both.
Fortunately, we can do this, provided that it is a single level+layer
(minigbm does not allocate anything more complex than non-mipmap 2D),
and not tiled/UBWC.  The latter constraint we can get away with because
NV12 is used for anything produced by hw.

BUG=b:238158981
TEST=cts-tradefed run cts -m CtsVideoTestCases

Change-Id: If1330340f84835643be7cf8cae95026cbcebf273
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3774456
Auto-Submit: Rob Clark <robdclark@chromium.org>
Tested-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-20 04:12:10 +00:00
Rob Clark
8513e1f542 virtgpu_crossdomain: Handle buffer special case
Blob formats (aka buffers) get represented as R8 textures with height
of one and width==size.  These actually have no particular stride
requirement, even though the host might ask for a pitch that would make
sense for a 2D R8 texture with height greater than one.

BUG=b:239335026
TEST=cts-tradefed run cts -m CtsNNAPITestCases

Change-Id: I293f03b1c4292ed50252ea272f7d9e47e6c64ee2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3770014
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Rob Clark <robdclark@chromium.org>
Auto-Submit: Rob Clark <robdclark@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
2022-07-19 20:05:31 +00:00
Yiwei Zhang
0495473b90 minigbm: deprecate drv_log to favor log level
TEST=build

Change-Id: I3f0021bfd05eb1ab7c3b35ae2f31d806bc0a58dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3761446
Reviewed-by: Jason Macnak <natsu@google.com>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-19 04:16:15 +00:00
Yiwei Zhang
bfb3c781a4 gralloc: use ALOGE instead of drv_log
TEST=build

Change-Id: I78b123f395fef8853f310a567ac0341b6958c535
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3761445
Reviewed-by: Jason Macnak <natsu@google.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-15 06:50:52 +00:00
Yiwei Zhang
7648f0649b minigbm: fix some formating
TEST=./presubmit.sh

Change-Id: Ia53da4264de6ab637a21ad55029024c52a253c0f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3761444
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-15 06:50:50 +00:00
Yiwei Zhang
7b3cbeabbb drv/virtgpu: add log level for logging
Harmless initialization logging should be info instead of error.

TEST=build and check logcat
BUG=b:234143058

Change-Id: I41ff39b428feb85d01663eec74b3f826007337c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3759415
Commit-Queue: Dominik Behr <dbehr@chromium.org>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Jason Macnak <natsu@google.com>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-14 08:48:27 +00:00
Chia-I Wu
52be91e21b virtgpu_crossdomain: add BO_USE_GPU_DATA_BUFFER to DRM_FORMAT_R8
It is used for AHBs that are SSBOs/UBOs.  But I noticed this mainly
because venus's test allocation uses this as well when
VK_ANDROID_external_memory_android_hardware_buffer is enabled.

BUG=b:238663100
TEST=ANGLE

Change-Id: I72bdc73e1afdcb3f23667a77bc892e8402f25188
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3749168
Auto-Submit: Chia-I Wu <olv@google.com>
Commit-Queue: Chia-I Wu <olv@google.com>
Tested-by: Chia-I Wu <olv@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-12 17:44:53 +00:00
Rob Clark
fbf1bd96cc virtgpu_crosdomain: Add camera use flags for NV12
BUG=b:238098098
TEST=cts-tradefed run cts -m CtsGraphicsTestCases -t android.graphics.cts.CameraGpuTest#testCameraImageCaptureAndRendering

Change-Id: Id224a2835975597306e2ee48b3c4dc7b2519b229
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3748699
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
Commit-Queue: Dominik Behr <dbehr@chromium.org>
Tested-by: Rob Clark <robdclark@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Auto-Submit: Rob Clark <robdclark@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-07-07 04:15:10 +00:00
Juston Li
e18552ac71 i915: add RPL-P PCI IDs
Like ADL-P, RPL-P is gen12 and has XE_LPD

PCI IDs from https://crrev.com/c/3654737

BUG=b:233114312
TEST=Protect playback works on RPL-P
     'cat /sys/kernel/debug/dri/0/i915_gem_framebuffer' shows gen12
     modifier

Change-Id: I5595d72a97fd5eb09080eea48ac4a3e3800747d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3726504
Commit-Queue: Juston Li <juston.li@intel.com>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Tested-by: George D Sworo <george.d.sworo@intel.corp-partner.google.com>
2022-07-05 21:17:50 +00:00
Juston Li
8987582ce0 i915: rename is_adlp to is_xelpd
Rename to reflect that ADL-P has the newer XE_LPD display IP that
required the height and stride adjustments.

RPL-P also has XE_LPD

BUG=b:233114312
TEST=sudo emerge-brya minigbm

Change-Id: I5f83a74d5332b4118fb841efd9200a6519e545e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3732651
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Tested-by: George D Sworo <george.d.sworo@intel.corp-partner.google.com>
Commit-Queue: Juston Li <juston.li@intel.com>
2022-07-05 21:17:48 +00:00
Gurchetan Singh
c3d282625c minigbm: eliminate fake capset check
It's better just to conditionally advertise cross domain capset
in crosvm.

This is to upstream aosp/2101455.

BUG=173630595
TEST=compile

Change-Id: Ic44176141cade44bfa0cc2fcf457ddafb7ae7195
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3707443
Reviewed-by: Rob Clark <robdclark@chromium.org>
Auto-Submit: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-06-17 07:10:07 +00:00
Rob Clark
9527781c92 virtgpu_crosdomain: Always use _USE_CROSS_DEVICE (when available)
This is required for dma-buf sharing, which is a thing that can happen
for sharing across processes even if it is the same GPU device involved
on both ends.  (Also, anything that gralloc allocates needs to be dmabuf
exportable, so not setting _USE_CROSS_DEVICE is just plain wrong.)

This fixes hangs in deqp-cts when using cross-domain virtgpu backend
(rather than the virgl backend)

BUG=b:230100768
TEST=Run deqp-cts

Change-Id: Ic9204feb0af52ef4a25bcfd554425cb8cd3f3fe1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3696038
Tested-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Rob Clark <robdclark@chromium.org>
Auto-Submit: Rob Clark <robdclark@chromium.org>
2022-06-14 20:23:13 +00:00
Jason Macnak
f08bb293f6 virtgpu_virgl: invalidate with BO_USE_GPU_DATA_BUFFER
... as the host may write to the buffer in a compute shader.

BUG=b:234513607
TEST=cts -m CtsNativeHardwareTestCases -t
     android.hardware.nativehardware.cts.AHardwareBufferNativeTests#Blob_BlobTest_GpuDataBufferCpuRead_BLOB

Change-Id: Ied49e7861e9ae0cbc9e25ecfb7feec30cc733864
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3688450
Tested-by: Jason Macnak <natsu@google.com>
Commit-Queue: Jason Macnak <natsu@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
2022-06-06 16:34:22 +00:00
Miguel Casas
26960909ad amdgpu: Only align video BOs to 512 for Android
crrev/c/3633249 compares libva and minigbm allocated Surfaces/BOs
for accelerated video decoding. Currently it fails on e.g. zork
because libva (mesa-amd backend) aligns those buffers to 256,
whereas minigbm aligns them to 512. This CL reduces the 512-align
provision in amdgpu to Android-originated buffers, where IIUC
from the bug there is such restriction.

BUG=b:200680176
BUG=b:171013552
TEST=vaapi_unittest on zork w/ crrev/c/3633249

Change-Id: I703037c70dded8596408c475518a29de3b59f039
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3647157
Tested-by: Miguel Casas-Sanchez <mcasas@chromium.org>
Reviewed-by: Drew Davenport <ddavenport@chromium.org>
Commit-Queue: Miguel Casas-Sanchez <mcasas@chromium.org>
2022-05-19 01:28:29 +00:00
Brian Norris
365e5b4a9e minigbm: rockchip: Support upstream AFBC modifier
BUG=b:214459790
TEST=boot to ui
TEST=null_platform_test, with modifications for choosing CRTC (big VOP)
     and AFBC modifier; e.g.,:
     `null_platform_test \
        --crtc_index 1 \
        --modifier \
          'DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_16x16|AFBC_FORMAT_MOD_SPARSE|AFBC_FORMAT_MOD_YTR)'`

Change-Id: I771d223ada1d7e6254855d28d998c01e455e72ef
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3462927
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Tested-by: Brian Norris <briannorris@chromium.org>
Commit-Queue: Brian Norris <briannorris@chromium.org>
2022-05-07 04:56:47 +00:00
Robert Mader
d73fa7ff37 minigbm: amdgpu: Update plane count in bo_import
This is required for importing multi-plane modifiers where the
format plane count is lower (usually `1`). It will be used
by Exo for v3/4 of the `zwp_linux_dmabuf_v1` Wayland potocol,
allowing Wayland clients (and thus all clients that build on
the Wayland support) to use explicit modifiers which again
can increase performance on many GPUs.

Also add another fallback path to `dri_num_planes_from_modifier()`
for cases when `queryDmaBufFormatModifierAttribs()` fails and do
some refactoring there. Without this, some test apparently fail.

This includes the amdgpu part of
commit 1a733377e9, partially reverting
commit 853b8542fb.

Bug🅱️224580219
Change-Id: I93b64123420b39f3b83ff1bbbb9c59ddf4bc6105
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/3568489
Reviewed-by: Bas Nieuwenhuizen <basni@chromium.org>
Tested-by: Robert Mader <robert.mader@collabora.com>
Commit-Queue: Robert Mader <robert.mader@collabora.com>
2022-05-04 08:47:25 +00:00