[PATCH] tests/vmwgfx: Check for 3d support on context and surface creation.

Zack Rusin zack.rusin at broadcom.com
Fri Jan 10 20:44:39 UTC 2025


On Fri, Jan 10, 2025 at 3:11 PM Maaz Mombasawala
<maaz.mombasawala at broadcom.com> wrote:
>
> Creating a vmwgfx context or surface will fail on a vm without 3d support.
> Check for 3d support when creating them so that the tests which use them
> skip instead of crashing.
>
> Signed-off-by: Maaz Mombasawala <maaz.mombasawala at broadcom.com>
> ---
>  lib/igt_vmwgfx.c                    | 12 +++++++++-
>  tests/vmwgfx/vmw_execution_buffer.c | 35 +++++++----------------------
>  2 files changed, 19 insertions(+), 28 deletions(-)
>
> diff --git a/lib/igt_vmwgfx.c b/lib/igt_vmwgfx.c
> index 74c13b52b..94d255655 100644
> --- a/lib/igt_vmwgfx.c
> +++ b/lib/igt_vmwgfx.c
> @@ -1,6 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0 OR MIT
>  /*
> - * Copyright (c) 2021-2024 Broadcom. All Rights Reserved. The term
> + * Copyright (c) 2021-2025 Broadcom. All Rights Reserved. The term
>   * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
>   */
>
> @@ -175,6 +175,11 @@ uint64 vmw_ioctl_get_param(int fd, uint32 param)
>         return arg.value;
>  }
>
> +static inline uint64 vmw_supports_3d(int fd)
> +{
> +       return vmw_ioctl_get_param(fd, DRM_VMW_PARAM_3D);
> +}
> +
>  void vmw_ioctl_get_3d_cap(int fd, uint64 buffer, uint32 max_size)
>  {
>         struct drm_vmw_get_3d_cap_arg arg = { 0 };
> @@ -445,6 +450,9 @@ struct vmw_surface *vmw_ioctl_create_surface_full(
>         int32 ret;
>         union drm_vmw_gb_surface_create_ext_arg arg = { 0 };
>
> +       /* Surface creation will fail if 3d is not supported. */
> +       igt_require(vmw_supports_3d(fd));
> +
>         surface = calloc(1, sizeof(struct vmw_surface));
>         if (!surface)
>                 goto out_err1;
> @@ -721,6 +729,8 @@ int32 vmw_ioctl_context_create(int drm_fd)
>         int ret;
>         union drm_vmw_extended_context_arg arg = { 0 };
>
> +       /* Context creation will fail if 3d is not supported. */
> +       igt_require(vmw_supports_3d(drm_fd));
>         arg.req = drm_vmw_context_dx;
>
>         do {
> diff --git a/tests/vmwgfx/vmw_execution_buffer.c b/tests/vmwgfx/vmw_execution_buffer.c
> index b89770b30..23c5f900d 100644
> --- a/tests/vmwgfx/vmw_execution_buffer.c
> +++ b/tests/vmwgfx/vmw_execution_buffer.c
> @@ -1,28 +1,8 @@
>  // SPDX-License-Identifier: GPL-2.0 OR MIT
> -/**********************************************************
> - * Copyright 2021-2022 VMware, Inc.
> - *
> - * 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.
> - *
> - **********************************************************/
> +/*
> + * Copyright (c) 2021-2025 Broadcom. All Rights Reserved. The term
> + * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
> + */
>
>  #include "igt_vmwgfx.h"
>
> @@ -271,12 +251,10 @@ static void execbuf_stress_test(int fd)
>  igt_main_args("st:", long_options, NULL, parse_options, NULL)
>  {
>         int fd;
> -       int32 cid;
>
>         igt_fixture
>         {
>                 fd = drm_open_driver_render(DRIVER_VMWGFX);
> -               cid = vmw_ioctl_context_create(fd);
>         }
>
>         igt_describe("Test creation/mapping of a basic mob.");
> @@ -294,7 +272,11 @@ igt_main_args("st:", long_options, NULL, parse_options, NULL)
>         igt_describe("Test basic fencing on command buffers.");
>         igt_subtest("execution-buffer-submit-sync")
>         {
> +               int32 cid;
> +
> +               cid = vmw_ioctl_context_create(fd);
>                 check_execbuf_submit_fence(fd, cid);
> +               vmw_ioctl_context_destroy(fd, cid);
>         }
>
>         if (options.stress_test) {
> @@ -307,7 +289,6 @@ igt_main_args("st:", long_options, NULL, parse_options, NULL)
>
>         igt_fixture
>         {
> -               vmw_ioctl_context_destroy(fd, cid);
>                 drm_close_driver(fd);
>         }
>  }
> --
> 2.43.0


Looks great.

Reviewed-by: Zack Rusin <zack.rusin at broadcom.com>

z
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5427 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://lists.freedesktop.org/archives/igt-dev/attachments/20250110/9a0dbb87/attachment-0001.bin>


More information about the igt-dev mailing list