pmaports/temp/mesa-grate/0004-Revert-tegra-Initial-support.patch
2019-08-23 21:27:41 +02:00

3101 lines
104 KiB
Diff

From 0295d3183b6ab357c3efa28134d8a752faaceaeb Mon Sep 17 00:00:00 2001
From: ryang <decatf@gmail.com>
Date: Thu, 9 Aug 2018 18:56:34 -0400
Subject: [PATCH 4/5] Revert "tegra: Initial support"
This reverts commit 1755f608f5201e0a23f00cc3ea1b01edd07eb6ef.
# Conflicts:
# configure.ac
# meson.build
---
configure.ac | 12 +-
include/drm-uapi/tegra_drm.h | 225 ----
meson.build | 7 +-
src/gallium/Makefile.am | 5 -
.../auxiliary/pipe-loader/pipe_loader_drm.c | 7 +-
src/gallium/auxiliary/target-helpers/drm_helper.h | 23 -
.../auxiliary/target-helpers/drm_helper_public.h | 3 -
src/gallium/drivers/tegra/Automake.inc | 11 -
src/gallium/drivers/tegra/Makefile.am | 14 -
src/gallium/drivers/tegra/Makefile.sources | 6 -
src/gallium/drivers/tegra/meson.build | 41 -
src/gallium/drivers/tegra/tegra_context.c | 1384 --------------------
src/gallium/drivers/tegra/tegra_context.h | 81 --
src/gallium/drivers/tegra/tegra_resource.h | 76 --
src/gallium/drivers/tegra/tegra_screen.c | 688 ----------
src/gallium/drivers/tegra/tegra_screen.h | 45 -
src/gallium/meson.build | 6 -
src/gallium/targets/dri/Makefile.am | 2 -
src/gallium/targets/dri/meson.build | 4 +-
src/gallium/targets/dri/target.c | 4 -
src/gallium/targets/vdpau/Makefile.am | 2 -
src/gallium/winsys/tegra/drm/Makefile.am | 13 -
src/gallium/winsys/tegra/drm/Makefile.sources | 2 -
src/gallium/winsys/tegra/drm/meson.build | 33 -
src/gallium/winsys/tegra/drm/tegra_drm_public.h | 31 -
src/gallium/winsys/tegra/drm/tegra_drm_winsys.c | 49 -
26 files changed, 4 insertions(+), 2770 deletions(-)
delete mode 100644 include/drm-uapi/tegra_drm.h
delete mode 100644 src/gallium/drivers/tegra/Automake.inc
delete mode 100644 src/gallium/drivers/tegra/Makefile.am
delete mode 100644 src/gallium/drivers/tegra/Makefile.sources
delete mode 100644 src/gallium/drivers/tegra/meson.build
delete mode 100644 src/gallium/drivers/tegra/tegra_context.c
delete mode 100644 src/gallium/drivers/tegra/tegra_context.h
delete mode 100644 src/gallium/drivers/tegra/tegra_resource.h
delete mode 100644 src/gallium/drivers/tegra/tegra_screen.c
delete mode 100644 src/gallium/drivers/tegra/tegra_screen.h
delete mode 100644 src/gallium/winsys/tegra/drm/Makefile.am
delete mode 100644 src/gallium/winsys/tegra/drm/Makefile.sources
delete mode 100644 src/gallium/winsys/tegra/drm/meson.build
delete mode 100644 src/gallium/winsys/tegra/drm/tegra_drm_public.h
delete mode 100644 src/gallium/winsys/tegra/drm/tegra_drm_winsys.c
diff --git a/configure.ac b/configure.ac
index f1fbdcc..3141348 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1359,7 +1359,7 @@ GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
AC_ARG_WITH([gallium-drivers],
[AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
[comma delimited Gallium drivers list, e.g.
- "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,tegra,vc4,vc5,virgl,etnaviv,imx"
+ "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,vc4,vc5,virgl,etnaviv,imx"
@<:@default=r300,r600,svga,swrast@:>@])],
[with_gallium_drivers="$withval"],
[with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
@@ -2643,10 +2643,6 @@ if test -n "$with_gallium_drivers"; then
ximx)
HAVE_GALLIUM_IMX=yes
;;
- xtegra)
- HAVE_GALLIUM_TEGRA=yes
- require_libdrm "tegra"
- ;;
xswrast)
HAVE_GALLIUM_SOFTPIPE=yes
if test "x$enable_llvm" = xyes; then
@@ -2771,9 +2767,6 @@ if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
AC_MSG_ERROR([Building with pl111 requires vc4])
fi
-if test "x$HAVE_GALLIUM_NOUVEAU" != xyes -a "x$HAVE_GALLIUM_TEGRA" = xyes; then
- AC_MSG_ERROR([Building with tegra requires nouveau])
-fi
detect_old_buggy_llvm() {
dnl llvm-config may not give the right answer when llvm is a built as a
@@ -2872,7 +2865,6 @@ AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
-AM_CONDITIONAL(HAVE_GALLIUM_TEGRA, test "x$HAVE_GALLIUM_TEGRA" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
@@ -3021,7 +3013,6 @@ AC_CONFIG_FILES([Makefile
src/gallium/drivers/softpipe/Makefile
src/gallium/drivers/svga/Makefile
src/gallium/drivers/swr/Makefile
- src/gallium/drivers/tegra/Makefile
src/gallium/drivers/etnaviv/Makefile
src/gallium/drivers/imx/Makefile
src/gallium/drivers/vc4/Makefile
@@ -3071,7 +3062,6 @@ AC_CONFIG_FILES([Makefile
src/gallium/winsys/sw/null/Makefile
src/gallium/winsys/sw/wrapper/Makefile
src/gallium/winsys/sw/xlib/Makefile
- src/gallium/winsys/tegra/drm/Makefile
src/gallium/winsys/vc4/drm/Makefile
src/gallium/winsys/vc5/drm/Makefile
src/gallium/winsys/virgl/drm/Makefile
diff --git a/include/drm-uapi/tegra_drm.h b/include/drm-uapi/tegra_drm.h
deleted file mode 100644
index 910cbe0..0000000
--- a/include/drm-uapi/tegra_drm.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved.
- *
- * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
- */
-
-#ifndef _TEGRA_DRM_H_
-#define _TEGRA_DRM_H_
-
-#include "drm.h"
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define DRM_TEGRA_GEM_CREATE_TILED (1 << 0)
-#define DRM_TEGRA_GEM_CREATE_BOTTOM_UP (1 << 1)
-
-struct drm_tegra_gem_create {
- __u64 size;
- __u32 flags;
- __u32 handle;
-};
-
-struct drm_tegra_gem_mmap {
- __u32 handle;
- __u32 pad;
- __u64 offset;
-};
-
-struct drm_tegra_syncpt_read {
- __u32 id;
- __u32 value;
-};
-
-struct drm_tegra_syncpt_incr {
- __u32 id;
- __u32 pad;
-};
-
-struct drm_tegra_syncpt_wait {
- __u32 id;
- __u32 thresh;
- __u32 timeout;
- __u32 value;
-};
-
-#define DRM_TEGRA_NO_TIMEOUT (0xffffffff)
-
-struct drm_tegra_open_channel {
- __u32 client;
- __u32 pad;
- __u64 context;
-};
-
-struct drm_tegra_close_channel {
- __u64 context;
-};
-
-struct drm_tegra_get_syncpt {
- __u64 context;
- __u32 index;
- __u32 id;
-};
-
-struct drm_tegra_get_syncpt_base {
- __u64 context;
- __u32 syncpt;
- __u32 id;
-};
-
-struct drm_tegra_syncpt {
- __u32 id;
- __u32 incrs;
-};
-
-struct drm_tegra_cmdbuf {
- __u32 handle;
- __u32 offset;
- __u32 words;
- __u32 pad;
-};
-
-struct drm_tegra_reloc {
- struct {
- __u32 handle;
- __u32 offset;
- } cmdbuf;
- struct {
- __u32 handle;
- __u32 offset;
- } target;
- __u32 shift;
- __u32 pad;
-};
-
-struct drm_tegra_waitchk {
- __u32 handle;
- __u32 offset;
- __u32 syncpt;
- __u32 thresh;
-};
-
-#define DRM_TEGRA_FENCE_WAIT (1 << 0)
-#define DRM_TEGRA_FENCE_EMIT (1 << 1)
-#define DRM_TEGRA_FENCE_FD (1 << 2)
-#define DRM_TEGRA_FENCE_FLAGS (DRM_TEGRA_FENCE_WAIT | \
- DRM_TEGRA_FENCE_EMIT | \
- DRM_TEGRA_FENCE_FD)
-
-struct drm_tegra_fence {
- __u32 handle;
- __u32 flags;
-};
-
-#define DRM_TEGRA_SUBMIT_FLAGS 0
-
-struct drm_tegra_submit {
- __u64 context;
- __u32 num_syncpts;
- __u32 num_cmdbufs;
- __u32 num_relocs;
- __u32 num_waitchks;
- __u32 waitchk_mask;
- __u32 timeout;
- __u64 syncpts;
- __u64 cmdbufs;
- __u64 relocs;
- __u64 waitchks;
- __u32 flags;
- __u32 num_fences;
- __u64 fences;
-
- __u32 reserved[2]; /* future expansion */
-};
-
-#define DRM_TEGRA_GEM_TILING_MODE_PITCH 0
-#define DRM_TEGRA_GEM_TILING_MODE_TILED 1
-#define DRM_TEGRA_GEM_TILING_MODE_BLOCK 2
-
-struct drm_tegra_gem_set_tiling {
- /* input */
- __u32 handle;
- __u32 mode;
- __u32 value;
- __u32 pad;
-};
-
-struct drm_tegra_gem_get_tiling {
- /* input */
- __u32 handle;
- /* output */
- __u32 mode;
- __u32 value;
- __u32 pad;
-};
-
-#define DRM_TEGRA_GEM_BOTTOM_UP (1 << 0)
-#define DRM_TEGRA_GEM_FLAGS (DRM_TEGRA_GEM_BOTTOM_UP)
-
-struct drm_tegra_gem_set_flags {
- /* input */
- __u32 handle;
- /* output */
- __u32 flags;
-};
-
-struct drm_tegra_gem_get_flags {
- /* input */
- __u32 handle;
- /* output */
- __u32 flags;
-};
-
-#define DRM_TEGRA_GEM_CREATE 0x00
-#define DRM_TEGRA_GEM_MMAP 0x01
-#define DRM_TEGRA_SYNCPT_READ 0x02
-#define DRM_TEGRA_SYNCPT_INCR 0x03
-#define DRM_TEGRA_SYNCPT_WAIT 0x04
-#define DRM_TEGRA_OPEN_CHANNEL 0x05
-#define DRM_TEGRA_CLOSE_CHANNEL 0x06
-#define DRM_TEGRA_GET_SYNCPT 0x07
-#define DRM_TEGRA_SUBMIT 0x08
-#define DRM_TEGRA_GET_SYNCPT_BASE 0x09
-#define DRM_TEGRA_GEM_SET_TILING 0x0a
-#define DRM_TEGRA_GEM_GET_TILING 0x0b
-#define DRM_TEGRA_GEM_SET_FLAGS 0x0c
-#define DRM_TEGRA_GEM_GET_FLAGS 0x0d
-
-#define DRM_IOCTL_TEGRA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_CREATE, struct drm_tegra_gem_create)
-#define DRM_IOCTL_TEGRA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_MMAP, struct drm_tegra_gem_mmap)
-#define DRM_IOCTL_TEGRA_SYNCPT_READ DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_READ, struct drm_tegra_syncpt_read)
-#define DRM_IOCTL_TEGRA_SYNCPT_INCR DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_INCR, struct drm_tegra_syncpt_incr)
-#define DRM_IOCTL_TEGRA_SYNCPT_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SYNCPT_WAIT, struct drm_tegra_syncpt_wait)
-#define DRM_IOCTL_TEGRA_OPEN_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_OPEN_CHANNEL, struct drm_tegra_open_channel)
-#define DRM_IOCTL_TEGRA_CLOSE_CHANNEL DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_CLOSE_CHANNEL, struct drm_tegra_open_channel)
-#define DRM_IOCTL_TEGRA_GET_SYNCPT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT, struct drm_tegra_get_syncpt)
-#define DRM_IOCTL_TEGRA_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_SUBMIT, struct drm_tegra_submit)
-#define DRM_IOCTL_TEGRA_GET_SYNCPT_BASE DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GET_SYNCPT_BASE, struct drm_tegra_get_syncpt_base)
-#define DRM_IOCTL_TEGRA_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_TILING, struct drm_tegra_gem_set_tiling)
-#define DRM_IOCTL_TEGRA_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_TILING, struct drm_tegra_gem_get_tiling)
-#define DRM_IOCTL_TEGRA_GEM_SET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_SET_FLAGS, struct drm_tegra_gem_set_flags)
-#define DRM_IOCTL_TEGRA_GEM_GET_FLAGS DRM_IOWR(DRM_COMMAND_BASE + DRM_TEGRA_GEM_GET_FLAGS, struct drm_tegra_gem_get_flags)
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* _TEGRA_DRM_H_ */
diff --git a/meson.build b/meson.build
index 0ecd14c..2288875 100644
--- a/meson.build
+++ b/meson.build
@@ -141,7 +141,6 @@ with_gallium_vc4 = false
with_gallium_vc5 = false
with_gallium_etnaviv = false
with_gallium_imx = false
-with_gallium_tegra = false
with_gallium_i915 = false
with_gallium_svga = false
with_gallium_virgl = false
@@ -153,7 +152,7 @@ if _drivers == 'auto'
if ['x86', 'x86_64'].contains(host_machine.cpu_family())
_drivers = 'r300,r600,radeonsi,nouveau,virgl,svga,swrast'
elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
- _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,nouveau,tegra,virgl,swrast'
+ _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,nouveau,virgl,swrast'
else
error('Unknown architecture. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.')
endif
@@ -176,7 +175,6 @@ if _drivers != ''
with_gallium_vc5 = _split.contains('vc5')
with_gallium_etnaviv = _split.contains('etnaviv')
with_gallium_imx = _split.contains('imx')
- with_gallium_tegra = _split.contains('tegra')
with_gallium_i915 = _split.contains('i915')
with_gallium_svga = _split.contains('svga')
with_gallium_virgl = _split.contains('virgl')
@@ -228,9 +226,6 @@ endif
if with_gallium_pl111 and not with_gallium_vc4
error('pl111 driver requires vc4 driver')
endif
-if with_gallium_tegra and not with_gallium_nouveau
- error('tegra driver requires nouveau driver')
-endif
if host_machine.system() == 'darwin'
with_dri_platform = 'apple'
diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am
index c153a5d..cf2fe42 100644
--- a/src/gallium/Makefile.am
+++ b/src/gallium/Makefile.am
@@ -78,11 +78,6 @@ if HAVE_GALLIUM_SWR
SUBDIRS += drivers/swr
endif
-## tegra
-if HAVE_GALLIUM_TEGRA
-SUBDIRS += drivers/tegra winsys/tegra/drm
-endif
-
## vc4/rpi
if HAVE_GALLIUM_VC4
SUBDIRS += drivers/vc4 winsys/vc4/drm
diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
index 3b959e5..c6c6b13 100644
--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
@@ -134,12 +134,7 @@ static const struct drm_driver_descriptor driver_descriptors[] = {
.driver_name = "imx-drm",
.create_screen = pipe_imx_drm_create_screen,
.configuration = pipe_default_configuration_query,
- },
- {
- .driver_name = "tegra",
- .create_screen = pipe_tegra_create_screen,
- .configuration = pipe_default_configuration_query,
- },
+ }
};
#endif
diff --git a/src/gallium/auxiliary/target-helpers/drm_helper.h b/src/gallium/auxiliary/target-helpers/drm_helper.h
index 7dc2497..7aea83b 100644
--- a/src/gallium/auxiliary/target-helpers/drm_helper.h
+++ b/src/gallium/auxiliary/target-helpers/drm_helper.h
@@ -379,28 +379,5 @@ pipe_imx_drm_create_screen(int fd, const struct pipe_screen_config *config)
#endif
-#ifdef GALLIUM_TEGRA
-#include "tegra/drm/tegra_drm_public.h"
-
-struct pipe_screen *
-pipe_tegra_create_screen(int fd, const struct pipe_screen_config *config)
-{
- struct pipe_screen *screen;
-
- screen = tegra_drm_screen_create(fd);
-
- return screen ? debug_screen_wrap(screen) : NULL;
-}
-
-#else
-
-struct pipe_screen *
-pipe_tegra_create_screen(int fd, const struct pipe_screen_config *config)
-{
- fprintf(stderr, "tegra: driver missing\n");
- return NULL;
-}
-
-#endif
#endif /* DRM_HELPER_H */
diff --git a/src/gallium/auxiliary/target-helpers/drm_helper_public.h b/src/gallium/auxiliary/target-helpers/drm_helper_public.h
index c1a7bf4..e21ea32 100644
--- a/src/gallium/auxiliary/target-helpers/drm_helper_public.h
+++ b/src/gallium/auxiliary/target-helpers/drm_helper_public.h
@@ -51,9 +51,6 @@ pipe_etna_create_screen(int fd, const struct pipe_screen_config *config);
struct pipe_screen *
pipe_imx_drm_create_screen(int fd, const struct pipe_screen_config *config);
-struct pipe_screen *
-pipe_tegra_create_screen(int fd, const struct pipe_screen_config *config);
-
const struct drm_conf_ret *
pipe_default_configuration_query(enum drm_conf conf);
diff --git a/src/gallium/drivers/tegra/Automake.inc b/src/gallium/drivers/tegra/Automake.inc
deleted file mode 100644
index f652819..0000000
--- a/src/gallium/drivers/tegra/Automake.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-if HAVE_GALLIUM_TEGRA
-
-TARGET_DRIVERS += tegra
-TARGET_CPPFLAGS += -DGALLIUM_TEGRA
-TARGET_LIB_DEPS += \
- $(top_builddir)/src/gallium/winsys/tegra/drm/libtegradrm.la \
- $(top_builddir)/src/gallium/drivers/tegra/libtegra.la \
- $(LIBDRM_LIBS) \
- $(TEGRA_LIBS)
-
-endif
diff --git a/src/gallium/drivers/tegra/Makefile.am b/src/gallium/drivers/tegra/Makefile.am
deleted file mode 100644
index 1347d25..0000000
--- a/src/gallium/drivers/tegra/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-include Makefile.sources
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
- -I$(top_srcdir)/include/drm-uapi \
- $(GALLIUM_DRIVER_CFLAGS)
-
-noinst_LTLIBRARIES = libtegra.la
-
-libtegra_la_SOURCES = \
- $(C_SOURCES)
-
-EXTRA_DIST = \
- meson.build
diff --git a/src/gallium/drivers/tegra/Makefile.sources b/src/gallium/drivers/tegra/Makefile.sources
deleted file mode 100644
index af4ff83..0000000
--- a/src/gallium/drivers/tegra/Makefile.sources
+++ /dev/null
@@ -1,6 +0,0 @@
-C_SOURCES := \
- tegra_context.c \
- tegra_context.h \
- tegra_resource.h \
- tegra_screen.c \
- tegra_screen.h
diff --git a/src/gallium/drivers/tegra/meson.build b/src/gallium/drivers/tegra/meson.build
deleted file mode 100644
index 79ccd14..0000000
--- a/src/gallium/drivers/tegra/meson.build
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright © 2018 NVIDIA 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.
-
-files_tegra = files(
- 'tegra_context.c',
- 'tegra_context.h',
- 'tegra_resource.h',
- 'tegra_screen.c',
-)
-
-libtegra = static_library(
- 'tegra',
- files_tegra,
- c_args : [c_vis_args],
- include_directories : [
- inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_gallium_drivers,
- inc_gallium_winsys, inc_drm_uapi
- ],
-)
-
-driver_tegra = declare_dependency(
- compile_args : '-DGALLIUM_TEGRA',
- link_with : [libtegra, libtegradrm],
-)
diff --git a/src/gallium/drivers/tegra/tegra_context.c b/src/gallium/drivers/tegra/tegra_context.c
deleted file mode 100644
index bbc0362..0000000
--- a/src/gallium/drivers/tegra/tegra_context.c
+++ /dev/null
@@ -1,1384 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#include <inttypes.h>
-#include <stdlib.h>
-
-#include "util/u_debug.h"
-#include "util/u_inlines.h"
-#include "util/u_upload_mgr.h"
-
-#include "tegra_context.h"
-#include "tegra_resource.h"
-#include "tegra_screen.h"
-
-static void
-tegra_destroy(struct pipe_context *pcontext)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- if (context->base.stream_uploader)
- u_upload_destroy(context->base.stream_uploader);
-
- context->gpu->destroy(context->gpu);
- free(context);
-}
-
-static void
-tegra_draw_vbo(struct pipe_context *pcontext,
- const struct pipe_draw_info *pinfo)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct pipe_draw_indirect_info indirect;
- struct pipe_draw_info info;
-
- if (pinfo && (pinfo->indirect || pinfo->index_size)) {
- memcpy(&info, pinfo, sizeof(info));
-
- if (pinfo->indirect) {
- memcpy(&indirect, pinfo->indirect, sizeof(indirect));
- indirect.buffer = tegra_resource_unwrap(info.indirect->buffer);
- info.indirect = &indirect;
- }
-
- if (pinfo->index_size && !pinfo->has_user_indices)
- info.index.resource = tegra_resource_unwrap(info.index.resource);
-
- pinfo = &info;
- }
-
- context->gpu->draw_vbo(context->gpu, pinfo);
-}
-
-static void
-tegra_render_condition(struct pipe_context *pcontext,
- struct pipe_query *query,
- boolean condition,
- unsigned int mode)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->render_condition(context->gpu, query, condition, mode);
-}
-
-static struct pipe_query *
-tegra_create_query(struct pipe_context *pcontext, unsigned int query_type,
- unsigned int index)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_query(context->gpu, query_type, index);
-}
-
-static struct pipe_query *
-tegra_create_batch_query(struct pipe_context *pcontext,
- unsigned int num_queries,
- unsigned int *queries)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_batch_query(context->gpu, num_queries,
- queries);
-}
-
-static void
-tegra_destroy_query(struct pipe_context *pcontext, struct pipe_query *query)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->destroy_query(context->gpu, query);
-}
-
-static boolean
-tegra_begin_query(struct pipe_context *pcontext, struct pipe_query *query)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->begin_query(context->gpu, query);
-}
-
-static bool
-tegra_end_query(struct pipe_context *pcontext, struct pipe_query *query)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->end_query(context->gpu, query);
-}
-
-static boolean
-tegra_get_query_result(struct pipe_context *pcontext,
- struct pipe_query *query,
- boolean wait,
- union pipe_query_result *result)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->get_query_result(context->gpu, query, wait,
- result);
-}
-
-static void
-tegra_get_query_result_resource(struct pipe_context *pcontext,
- struct pipe_query *query,
- boolean wait,
- enum pipe_query_value_type result_type,
- int index,
- struct pipe_resource *resource,
- unsigned int offset)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->get_query_result_resource(context->gpu, query, wait,
- result_type, index, resource,
- offset);
-}
-
-static void
-tegra_set_active_query_state(struct pipe_context *pcontext, boolean enable)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_active_query_state(context->gpu, enable);
-}
-
-static void *
-tegra_create_blend_state(struct pipe_context *pcontext,
- const struct pipe_blend_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_blend_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_blend_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_blend_state(context->gpu, so);
-}
-
-static void
-tegra_delete_blend_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_blend_state(context->gpu, so);
-}
-
-static void *
-tegra_create_sampler_state(struct pipe_context *pcontext,
- const struct pipe_sampler_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_sampler_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_sampler_states(struct pipe_context *pcontext, unsigned shader,
- unsigned start_slot, unsigned num_samplers,
- void **samplers)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_sampler_states(context->gpu, shader, start_slot,
- num_samplers, samplers);
-}
-
-static void
-tegra_delete_sampler_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_sampler_state(context->gpu, so);
-}
-
-static void *
-tegra_create_rasterizer_state(struct pipe_context *pcontext,
- const struct pipe_rasterizer_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_rasterizer_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_rasterizer_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_rasterizer_state(context->gpu, so);
-}
-
-static void
-tegra_delete_rasterizer_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_rasterizer_state(context->gpu, so);
-}
-
-static void *
-tegra_create_depth_stencil_alpha_state(struct pipe_context *pcontext,
- const struct pipe_depth_stencil_alpha_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_depth_stencil_alpha_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_depth_stencil_alpha_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_depth_stencil_alpha_state(context->gpu, so);
-}
-
-static void
-tegra_delete_depth_stencil_alpha_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_depth_stencil_alpha_state(context->gpu, so);
-}
-
-static void *
-tegra_create_fs_state(struct pipe_context *pcontext,
- const struct pipe_shader_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_fs_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_fs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_fs_state(context->gpu, so);
-}
-
-static void
-tegra_delete_fs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_fs_state(context->gpu, so);
-}
-
-static void *
-tegra_create_vs_state(struct pipe_context *pcontext,
- const struct pipe_shader_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_vs_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_vs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_vs_state(context->gpu, so);
-}
-
-static void
-tegra_delete_vs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_vs_state(context->gpu, so);
-}
-
-static void *
-tegra_create_gs_state(struct pipe_context *pcontext,
- const struct pipe_shader_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_gs_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_gs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_gs_state(context->gpu, so);
-}
-
-static void
-tegra_delete_gs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_gs_state(context->gpu, so);
-}
-
-static void *
-tegra_create_tcs_state(struct pipe_context *pcontext,
- const struct pipe_shader_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_tcs_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_tcs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_tcs_state(context->gpu, so);
-}
-
-static void
-tegra_delete_tcs_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_tcs_state(context->gpu, so);
-}
-
-static void *
-tegra_create_tes_state(struct pipe_context *pcontext,
- const struct pipe_shader_state *cso)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_tes_state(context->gpu, cso);
-}
-
-static void
-tegra_bind_tes_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_tes_state(context->gpu, so);
-}
-
-static void
-tegra_delete_tes_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_tes_state(context->gpu, so);
-}
-
-static void *
-tegra_create_vertex_elements_state(struct pipe_context *pcontext,
- unsigned num_elements,
- const struct pipe_vertex_element *elements)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_vertex_elements_state(context->gpu,
- num_elements,
- elements);
-}
-
-static void
-tegra_bind_vertex_elements_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_vertex_elements_state(context->gpu, so);
-}
-
-static void
-tegra_delete_vertex_elements_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_vertex_elements_state(context->gpu, so);
-}
-
-static void
-tegra_set_blend_color(struct pipe_context *pcontext,
- const struct pipe_blend_color *color)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_blend_color(context->gpu, color);
-}
-
-static void
-tegra_set_stencil_ref(struct pipe_context *pcontext,
- const struct pipe_stencil_ref *ref)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_stencil_ref(context->gpu, ref);
-}
-
-static void
-tegra_set_sample_mask(struct pipe_context *pcontext, unsigned int mask)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_sample_mask(context->gpu, mask);
-}
-
-static void
-tegra_set_min_samples(struct pipe_context *pcontext, unsigned int samples)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_min_samples(context->gpu, samples);
-}
-
-static void
-tegra_set_clip_state(struct pipe_context *pcontext,
- const struct pipe_clip_state *state)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_clip_state(context->gpu, state);
-}
-
-static void
-tegra_set_constant_buffer(struct pipe_context *pcontext, unsigned int shader,
- unsigned int index,
- const struct pipe_constant_buffer *buf)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct pipe_constant_buffer buffer;
-
- if (buf && buf->buffer) {
- memcpy(&buffer, buf, sizeof(buffer));
- buffer.buffer = tegra_resource_unwrap(buffer.buffer);
- buf = &buffer;
- }
-
- context->gpu->set_constant_buffer(context->gpu, shader, index, buf);
-}
-
-static void
-tegra_set_framebuffer_state(struct pipe_context *pcontext,
- const struct pipe_framebuffer_state *fb)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct pipe_framebuffer_state state;
- unsigned i;
-
- if (fb) {
- memcpy(&state, fb, sizeof(state));
-
- for (i = 0; i < fb->nr_cbufs; i++)
- state.cbufs[i] = tegra_surface_unwrap(fb->cbufs[i]);
-
- while (i < PIPE_MAX_COLOR_BUFS)
- state.cbufs[i++] = NULL;
-
- state.zsbuf = tegra_surface_unwrap(fb->zsbuf);
-
- fb = &state;
- }
-
- context->gpu->set_framebuffer_state(context->gpu, fb);
-}
-
-static void
-tegra_set_polygon_stipple(struct pipe_context *pcontext,
- const struct pipe_poly_stipple *stipple)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_polygon_stipple(context->gpu, stipple);
-}
-
-static void
-tegra_set_scissor_states(struct pipe_context *pcontext, unsigned start_slot,
- unsigned num_scissors,
- const struct pipe_scissor_state *scissors)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_scissor_states(context->gpu, start_slot, num_scissors,
- scissors);
-}
-
-static void
-tegra_set_window_rectangles(struct pipe_context *pcontext, boolean include,
- unsigned int num_rectangles,
- const struct pipe_scissor_state *rectangles)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_window_rectangles(context->gpu, include, num_rectangles,
- rectangles);
-}
-
-static void
-tegra_set_viewport_states(struct pipe_context *pcontext, unsigned start_slot,
- unsigned num_viewports,
- const struct pipe_viewport_state *viewports)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_viewport_states(context->gpu, start_slot, num_viewports,
- viewports);
-}
-
-static void
-tegra_set_sampler_views(struct pipe_context *pcontext, unsigned shader,
- unsigned start_slot, unsigned num_views,
- struct pipe_sampler_view **pviews)
-{
- struct pipe_sampler_view *views[PIPE_MAX_SHADER_SAMPLER_VIEWS];
- struct tegra_context *context = to_tegra_context(pcontext);
- unsigned i;
-
- for (i = 0; i < num_views; i++)
- views[i] = tegra_sampler_view_unwrap(pviews[i]);
-
- context->gpu->set_sampler_views(context->gpu, shader, start_slot,
- num_views, views);
-}
-
-static void
-tegra_set_tess_state(struct pipe_context *pcontext,
- const float default_outer_level[4],
- const float default_inner_level[2])
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_tess_state(context->gpu, default_outer_level,
- default_inner_level);
-}
-
-static void
-tegra_set_debug_callback(struct pipe_context *pcontext,
- const struct pipe_debug_callback *callback)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_debug_callback(context->gpu, callback);
-}
-
-static void
-tegra_set_shader_buffers(struct pipe_context *pcontext, unsigned int shader,
- unsigned start, unsigned count,
- const struct pipe_shader_buffer *buffers)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_shader_buffers(context->gpu, shader, start, count,
- buffers);
-}
-
-static void
-tegra_set_shader_images(struct pipe_context *pcontext, unsigned int shader,
- unsigned start, unsigned count,
- const struct pipe_image_view *images)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_shader_images(context->gpu, shader, start, count,
- images);
-}
-
-static void
-tegra_set_vertex_buffers(struct pipe_context *pcontext, unsigned start_slot,
- unsigned num_buffers,
- const struct pipe_vertex_buffer *buffers)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct pipe_vertex_buffer buf[PIPE_MAX_SHADER_INPUTS];
- unsigned i;
-
- if (num_buffers && buffers) {
- memcpy(buf, buffers, num_buffers * sizeof(struct pipe_vertex_buffer));
-
- for (i = 0; i < num_buffers; i++) {
- if (!buf[i].is_user_buffer)
- buf[i].buffer.resource = tegra_resource_unwrap(buf[i].buffer.resource);
- }
-
- buffers = buf;
- }
-
- context->gpu->set_vertex_buffers(context->gpu, start_slot, num_buffers,
- buffers);
-}
-
-static struct pipe_stream_output_target *
-tegra_create_stream_output_target(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned buffer_offset,
- unsigned buffer_size)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_stream_output_target(context->gpu,
- resource->gpu,
- buffer_offset,
- buffer_size);
-}
-
-static void
-tegra_stream_output_target_destroy(struct pipe_context *pcontext,
- struct pipe_stream_output_target *target)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->stream_output_target_destroy(context->gpu, target);
-}
-
-static void
-tegra_set_stream_output_targets(struct pipe_context *pcontext,
- unsigned num_targets,
- struct pipe_stream_output_target **targets,
- const unsigned *offsets)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_stream_output_targets(context->gpu, num_targets,
- targets, offsets);
-}
-
-static void
-tegra_resource_copy_region(struct pipe_context *pcontext,
- struct pipe_resource *pdst,
- unsigned int dst_level,
- unsigned int dstx,
- unsigned int dsty,
- unsigned int dstz,
- struct pipe_resource *psrc,
- unsigned int src_level,
- const struct pipe_box *src_box)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_resource *dst = to_tegra_resource(pdst);
- struct tegra_resource *src = to_tegra_resource(psrc);
-
- context->gpu->resource_copy_region(context->gpu, dst->gpu, dst_level, dstx,
- dsty, dstz, src->gpu, src_level,
- src_box);
-}
-
-static void
-tegra_blit(struct pipe_context *pcontext, const struct pipe_blit_info *pinfo)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct pipe_blit_info info;
-
- if (pinfo) {
- memcpy(&info, pinfo, sizeof(info));
- info.dst.resource = tegra_resource_unwrap(info.dst.resource);
- info.src.resource = tegra_resource_unwrap(info.src.resource);
- pinfo = &info;
- }
-
- context->gpu->blit(context->gpu, pinfo);
-}
-
-static void
-tegra_clear(struct pipe_context *pcontext, unsigned buffers,
- const union pipe_color_union *color, double depth,
- unsigned stencil)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->clear(context->gpu, buffers, color, depth, stencil);
-}
-
-static void
-tegra_clear_render_target(struct pipe_context *pcontext,
- struct pipe_surface *pdst,
- const union pipe_color_union *color,
- unsigned int dstx,
- unsigned int dsty,
- unsigned int width,
- unsigned int height,
- bool render_condition)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_surface *dst = to_tegra_surface(pdst);
-
- context->gpu->clear_render_target(context->gpu, dst->gpu, color, dstx,
- dsty, width, height, render_condition);
-}
-
-static void
-tegra_clear_depth_stencil(struct pipe_context *pcontext,
- struct pipe_surface *pdst,
- unsigned int flags,
- double depth,
- unsigned int stencil,
- unsigned int dstx,
- unsigned int dsty,
- unsigned int width,
- unsigned int height,
- bool render_condition)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_surface *dst = to_tegra_surface(pdst);
-
- context->gpu->clear_depth_stencil(context->gpu, dst->gpu, flags, depth,
- stencil, dstx, dsty, width, height,
- render_condition);
-}
-
-static void
-tegra_clear_texture(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned int level,
- const struct pipe_box *box,
- const void *data)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->clear_texture(context->gpu, resource->gpu, level, box, data);
-}
-
-static void
-tegra_clear_buffer(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned int offset,
- unsigned int size,
- const void *value,
- int value_size)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->clear_buffer(context->gpu, resource->gpu, offset, size,
- value, value_size);
-}
-
-static void
-tegra_flush(struct pipe_context *pcontext, struct pipe_fence_handle **fence,
- unsigned flags)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->flush(context->gpu, fence, flags);
-}
-
-static void
-tegra_create_fence_fd(struct pipe_context *pcontext,
- struct pipe_fence_handle **fence,
- int fd, enum pipe_fd_type type)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- assert(type == PIPE_FD_TYPE_NATIVE_SYNC);
- context->gpu->create_fence_fd(context->gpu, fence, fd, type);
-}
-
-static void
-tegra_fence_server_sync(struct pipe_context *pcontext,
- struct pipe_fence_handle *fence)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->fence_server_sync(context->gpu, fence);
-}
-
-static struct pipe_sampler_view *
-tegra_create_sampler_view(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- const struct pipe_sampler_view *template)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_sampler_view *view;
-
- view = calloc(1, sizeof(*view));
- if (!view)
- return NULL;
-
- view->gpu = context->gpu->create_sampler_view(context->gpu, resource->gpu,
- template);
- memcpy(&view->base, view->gpu, sizeof(*view->gpu));
- /* overwrite to prevent reference from being released */
- view->base.texture = NULL;
-
- pipe_reference_init(&view->base.reference, 1);
- pipe_resource_reference(&view->base.texture, presource);
- view->base.context = pcontext;
-
- return &view->base;
-}
-
-static void
-tegra_sampler_view_destroy(struct pipe_context *pcontext,
- struct pipe_sampler_view *pview)
-{
- struct tegra_sampler_view *view = to_tegra_sampler_view(pview);
-
- pipe_resource_reference(&view->base.texture, NULL);
- pipe_sampler_view_reference(&view->gpu, NULL);
- free(view);
-}
-
-static struct pipe_surface *
-tegra_create_surface(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- const struct pipe_surface *template)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_surface *surface;
-
- surface = calloc(1, sizeof(*surface));
- if (!surface)
- return NULL;
-
- surface->gpu = context->gpu->create_surface(context->gpu, resource->gpu,
- template);
- if (!surface->gpu) {
- free(surface);
- return NULL;
- }
-
- memcpy(&surface->base, surface->gpu, sizeof(*surface->gpu));
- /* overwrite to prevent reference from being released */
- surface->base.texture = NULL;
-
- pipe_reference_init(&surface->base.reference, 1);
- pipe_resource_reference(&surface->base.texture, presource);
- surface->base.context = &context->base;
-
- return &surface->base;
-}
-
-static void
-tegra_surface_destroy(struct pipe_context *pcontext,
- struct pipe_surface *psurface)
-{
- struct tegra_surface *surface = to_tegra_surface(psurface);
-
- pipe_resource_reference(&surface->base.texture, NULL);
- pipe_surface_reference(&surface->gpu, NULL);
- free(surface);
-}
-
-static void *
-tegra_transfer_map(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned level, unsigned usage,
- const struct pipe_box *box,
- struct pipe_transfer **ptransfer)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_transfer *transfer;
-
- transfer = calloc(1, sizeof(*transfer));
- if (!transfer)
- return NULL;
-
- transfer->map = context->gpu->transfer_map(context->gpu, resource->gpu,
- level, usage, box,
- &transfer->gpu);
- memcpy(&transfer->base, transfer->gpu, sizeof(*transfer->gpu));
- transfer->base.resource = NULL;
- pipe_resource_reference(&transfer->base.resource, presource);
-
- *ptransfer = &transfer->base;
-
- return transfer->map;
-}
-
-static void
-tegra_transfer_flush_region(struct pipe_context *pcontext,
- struct pipe_transfer *ptransfer,
- const struct pipe_box *box)
-{
- struct tegra_transfer *transfer = to_tegra_transfer(ptransfer);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->transfer_flush_region(context->gpu, transfer->gpu, box);
-}
-
-static void
-tegra_transfer_unmap(struct pipe_context *pcontext,
- struct pipe_transfer *ptransfer)
-{
- struct tegra_transfer *transfer = to_tegra_transfer(ptransfer);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->transfer_unmap(context->gpu, transfer->gpu);
- pipe_resource_reference(&transfer->base.resource, NULL);
- free(transfer);
-}
-
-static void
-tegra_buffer_subdata(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned usage, unsigned offset,
- unsigned size, const void *data)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->buffer_subdata(context->gpu, resource->gpu, usage, offset,
- size, data);
-}
-
-static void
-tegra_texture_subdata(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- unsigned level,
- unsigned usage,
- const struct pipe_box *box,
- const void *data,
- unsigned stride,
- unsigned layer_stride)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->texture_subdata(context->gpu, resource->gpu, level, usage,
- box, data, stride, layer_stride);
-}
-
-static void
-tegra_texture_barrier(struct pipe_context *pcontext, unsigned int flags)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->texture_barrier(context->gpu, flags);
-}
-
-static void
-tegra_memory_barrier(struct pipe_context *pcontext, unsigned int flags)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->memory_barrier(context->gpu, flags);
-}
-
-static struct pipe_video_codec *
-tegra_create_video_codec(struct pipe_context *pcontext,
- const struct pipe_video_codec *template)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_video_codec(context->gpu, template);
-}
-
-static struct pipe_video_buffer *
-tegra_create_video_buffer(struct pipe_context *pcontext,
- const struct pipe_video_buffer *template)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_video_buffer(context->gpu, template);
-}
-
-static void *
-tegra_create_compute_state(struct pipe_context *pcontext,
- const struct pipe_compute_state *template)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_compute_state(context->gpu, template);
-}
-
-static void
-tegra_bind_compute_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->bind_compute_state(context->gpu, so);
-}
-
-static void
-tegra_delete_compute_state(struct pipe_context *pcontext, void *so)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_compute_state(context->gpu, so);
-}
-
-static void
-tegra_set_compute_resources(struct pipe_context *pcontext,
- unsigned int start, unsigned int count,
- struct pipe_surface **resources)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- /* XXX unwrap resources */
-
- context->gpu->set_compute_resources(context->gpu, start, count, resources);
-}
-
-static void
-tegra_set_global_binding(struct pipe_context *pcontext, unsigned int first,
- unsigned int count, struct pipe_resource **resources,
- uint32_t **handles)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- /* XXX unwrap resources */
-
- context->gpu->set_global_binding(context->gpu, first, count, resources,
- handles);
-}
-
-static void
-tegra_launch_grid(struct pipe_context *pcontext,
- const struct pipe_grid_info *info)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- /* XXX unwrap info->indirect? */
-
- context->gpu->launch_grid(context->gpu, info);
-}
-
-static void
-tegra_get_sample_position(struct pipe_context *pcontext, unsigned int count,
- unsigned int index, float *value)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->get_sample_position(context->gpu, count, index, value);
-}
-
-static uint64_t
-tegra_get_timestamp(struct pipe_context *pcontext)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->get_timestamp(context->gpu);
-}
-
-static void
-tegra_flush_resource(struct pipe_context *pcontext,
- struct pipe_resource *presource)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->flush_resource(context->gpu, resource->gpu);
-}
-
-static void
-tegra_invalidate_resource(struct pipe_context *pcontext,
- struct pipe_resource *presource)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->invalidate_resource(context->gpu, resource->gpu);
-}
-
-static enum pipe_reset_status
-tegra_get_device_reset_status(struct pipe_context *pcontext)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->get_device_reset_status(context->gpu);
-}
-
-static void
-tegra_set_device_reset_callback(struct pipe_context *pcontext,
- const struct pipe_device_reset_callback *cb)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->set_device_reset_callback(context->gpu, cb);
-}
-
-static void
-tegra_dump_debug_state(struct pipe_context *pcontext, FILE *stream,
- unsigned int flags)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->dump_debug_state(context->gpu, stream, flags);
-}
-
-static void
-tegra_emit_string_marker(struct pipe_context *pcontext, const char *string,
- int length)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->emit_string_marker(context->gpu, string, length);
-}
-
-static boolean
-tegra_generate_mipmap(struct pipe_context *pcontext,
- struct pipe_resource *presource,
- enum pipe_format format,
- unsigned int base_level,
- unsigned int last_level,
- unsigned int first_layer,
- unsigned int last_layer)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->generate_mipmap(context->gpu, resource->gpu, format,
- base_level, last_level, first_layer,
- last_layer);
-}
-
-static uint64_t
-tegra_create_texture_handle(struct pipe_context *pcontext,
- struct pipe_sampler_view *view,
- const struct pipe_sampler_state *state)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_texture_handle(context->gpu, view, state);
-}
-
-static void tegra_delete_texture_handle(struct pipe_context *pcontext,
- uint64_t handle)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_texture_handle(context->gpu, handle);
-}
-
-static void tegra_make_texture_handle_resident(struct pipe_context *pcontext,
- uint64_t handle, bool resident)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->make_texture_handle_resident(context->gpu, handle, resident);
-}
-
-static uint64_t tegra_create_image_handle(struct pipe_context *pcontext,
- const struct pipe_image_view *image)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- return context->gpu->create_image_handle(context->gpu, image);
-}
-
-static void tegra_delete_image_handle(struct pipe_context *pcontext,
- uint64_t handle)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->delete_image_handle(context->gpu, handle);
-}
-
-static void tegra_make_image_handle_resident(struct pipe_context *pcontext,
- uint64_t handle, unsigned access,
- bool resident)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
-
- context->gpu->make_image_handle_resident(context->gpu, handle, access,
- resident);
-}
-
-struct pipe_context *
-tegra_screen_context_create(struct pipe_screen *pscreen, void *priv,
- unsigned int flags)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct tegra_context *context;
-
- context = calloc(1, sizeof(*context));
- if (!context)
- return NULL;
-
- context->gpu = screen->gpu->context_create(screen->gpu, priv, flags);
- if (!context->gpu) {
- debug_error("failed to create GPU context\n");
- goto free;
- }
-
- context->base.screen = &screen->base;
- context->base.priv = priv;
-
- /*
- * Create custom stream and const uploaders. Note that technically nouveau
- * already creates uploaders that could be reused, but that would make the
- * resource unwrapping rather complicate. The reason for that is that both
- * uploaders create resources based on the context that they were created
- * from, which means that nouveau's uploader will use the nouveau context
- * which means that those resources must not be unwrapped. So before each
- * resource is unwrapped, the code would need to check that it does not
- * correspond to the uploaders' buffers.
- *
- * However, duplicating the uploaders here sounds worse than it is. The
- * default implementation that nouveau uses allocates buffers lazily, and
- * since it is never used, no buffers will every be allocated and the only
- * memory wasted is that occupied by the nouveau uploader itself.
- */
- context->base.stream_uploader = u_upload_create_default(&context->base);
- if (!context->base.stream_uploader)
- goto destroy;
-
- context->base.const_uploader = context->base.stream_uploader;
-
- context->base.destroy = tegra_destroy;
-
- context->base.draw_vbo = tegra_draw_vbo;
-
- context->base.render_condition = tegra_render_condition;
-
- context->base.create_query = tegra_create_query;
- context->base.create_batch_query = tegra_create_batch_query;
- context->base.destroy_query = tegra_destroy_query;
- context->base.begin_query = tegra_begin_query;
- context->base.end_query = tegra_end_query;
- context->base.get_query_result = tegra_get_query_result;
- context->base.get_query_result_resource = tegra_get_query_result_resource;
- context->base.set_active_query_state = tegra_set_active_query_state;
-
- context->base.create_blend_state = tegra_create_blend_state;
- context->base.bind_blend_state = tegra_bind_blend_state;
- context->base.delete_blend_state = tegra_delete_blend_state;
-
- context->base.create_sampler_state = tegra_create_sampler_state;
- context->base.bind_sampler_states = tegra_bind_sampler_states;
- context->base.delete_sampler_state = tegra_delete_sampler_state;
-
- context->base.create_rasterizer_state = tegra_create_rasterizer_state;
- context->base.bind_rasterizer_state = tegra_bind_rasterizer_state;
- context->base.delete_rasterizer_state = tegra_delete_rasterizer_state;
-
- context->base.create_depth_stencil_alpha_state = tegra_create_depth_stencil_alpha_state;
- context->base.bind_depth_stencil_alpha_state = tegra_bind_depth_stencil_alpha_state;
- context->base.delete_depth_stencil_alpha_state = tegra_delete_depth_stencil_alpha_state;
-
- context->base.create_fs_state = tegra_create_fs_state;
- context->base.bind_fs_state = tegra_bind_fs_state;
- context->base.delete_fs_state = tegra_delete_fs_state;
-
- context->base.create_vs_state = tegra_create_vs_state;
- context->base.bind_vs_state = tegra_bind_vs_state;
- context->base.delete_vs_state = tegra_delete_vs_state;
-
- context->base.create_gs_state = tegra_create_gs_state;
- context->base.bind_gs_state = tegra_bind_gs_state;
- context->base.delete_gs_state = tegra_delete_gs_state;
-
- context->base.create_tcs_state = tegra_create_tcs_state;
- context->base.bind_tcs_state = tegra_bind_tcs_state;
- context->base.delete_tcs_state = tegra_delete_tcs_state;
-
- context->base.create_tes_state = tegra_create_tes_state;
- context->base.bind_tes_state = tegra_bind_tes_state;
- context->base.delete_tes_state = tegra_delete_tes_state;
-
- context->base.create_vertex_elements_state = tegra_create_vertex_elements_state;
- context->base.bind_vertex_elements_state = tegra_bind_vertex_elements_state;
- context->base.delete_vertex_elements_state = tegra_delete_vertex_elements_state;
-
- context->base.set_blend_color = tegra_set_blend_color;
- context->base.set_stencil_ref = tegra_set_stencil_ref;
- context->base.set_sample_mask = tegra_set_sample_mask;
- context->base.set_min_samples = tegra_set_min_samples;
- context->base.set_clip_state = tegra_set_clip_state;
-
- context->base.set_constant_buffer = tegra_set_constant_buffer;
- context->base.set_framebuffer_state = tegra_set_framebuffer_state;
- context->base.set_polygon_stipple = tegra_set_polygon_stipple;
- context->base.set_scissor_states = tegra_set_scissor_states;
- context->base.set_window_rectangles = tegra_set_window_rectangles;
- context->base.set_viewport_states = tegra_set_viewport_states;
- context->base.set_sampler_views = tegra_set_sampler_views;
- context->base.set_tess_state = tegra_set_tess_state;
-
- context->base.set_debug_callback = tegra_set_debug_callback;
-
- context->base.set_shader_buffers = tegra_set_shader_buffers;
- context->base.set_shader_images = tegra_set_shader_images;
- context->base.set_vertex_buffers = tegra_set_vertex_buffers;
-
- context->base.create_stream_output_target = tegra_create_stream_output_target;
- context->base.stream_output_target_destroy = tegra_stream_output_target_destroy;
- context->base.set_stream_output_targets = tegra_set_stream_output_targets;
-
- context->base.resource_copy_region = tegra_resource_copy_region;
- context->base.blit = tegra_blit;
- context->base.clear = tegra_clear;
- context->base.clear_render_target = tegra_clear_render_target;
- context->base.clear_depth_stencil = tegra_clear_depth_stencil;
- context->base.clear_texture = tegra_clear_texture;
- context->base.clear_buffer = tegra_clear_buffer;
- context->base.flush = tegra_flush;
-
- context->base.create_fence_fd = tegra_create_fence_fd;
- context->base.fence_server_sync = tegra_fence_server_sync;
-
- context->base.create_sampler_view = tegra_create_sampler_view;
- context->base.sampler_view_destroy = tegra_sampler_view_destroy;
-
- context->base.create_surface = tegra_create_surface;
- context->base.surface_destroy = tegra_surface_destroy;
-
- context->base.transfer_map = tegra_transfer_map;
- context->base.transfer_flush_region = tegra_transfer_flush_region;
- context->base.transfer_unmap = tegra_transfer_unmap;
- context->base.buffer_subdata = tegra_buffer_subdata;
- context->base.texture_subdata = tegra_texture_subdata;
-
- context->base.texture_barrier = tegra_texture_barrier;
- context->base.memory_barrier = tegra_memory_barrier;
-
- context->base.create_video_codec = tegra_create_video_codec;
- context->base.create_video_buffer = tegra_create_video_buffer;
-
- context->base.create_compute_state = tegra_create_compute_state;
- context->base.bind_compute_state = tegra_bind_compute_state;
- context->base.delete_compute_state = tegra_delete_compute_state;
- context->base.set_compute_resources = tegra_set_compute_resources;
- context->base.set_global_binding = tegra_set_global_binding;
- context->base.launch_grid = tegra_launch_grid;
- context->base.get_sample_position = tegra_get_sample_position;
- context->base.get_timestamp = tegra_get_timestamp;
-
- context->base.flush_resource = tegra_flush_resource;
- context->base.invalidate_resource = tegra_invalidate_resource;
-
- context->base.get_device_reset_status = tegra_get_device_reset_status;
- context->base.set_device_reset_callback = tegra_set_device_reset_callback;
- context->base.dump_debug_state = tegra_dump_debug_state;
- context->base.emit_string_marker = tegra_emit_string_marker;
-
- context->base.generate_mipmap = tegra_generate_mipmap;
-
- context->base.create_texture_handle = tegra_create_texture_handle;
- context->base.delete_texture_handle = tegra_delete_texture_handle;
- context->base.make_texture_handle_resident = tegra_make_texture_handle_resident;
- context->base.create_image_handle = tegra_create_image_handle;
- context->base.delete_image_handle = tegra_delete_image_handle;
- context->base.make_image_handle_resident = tegra_make_image_handle_resident;
-
- return &context->base;
-
-destroy:
- context->gpu->destroy(context->gpu);
-free:
- free(context);
- return NULL;
-}
diff --git a/src/gallium/drivers/tegra/tegra_context.h b/src/gallium/drivers/tegra/tegra_context.h
deleted file mode 100644
index 4869b09..0000000
--- a/src/gallium/drivers/tegra/tegra_context.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#ifndef TEGRA_CONTEXT_H
-#define TEGRA_CONTEXT_H
-
-#include "pipe/p_context.h"
-#include "pipe/p_state.h"
-
-struct tegra_screen;
-
-struct tegra_context {
- struct pipe_context base;
- struct pipe_context *gpu;
-};
-
-static inline struct tegra_context *
-to_tegra_context(struct pipe_context *context)
-{
- return (struct tegra_context *)context;
-}
-
-struct pipe_context *
-tegra_screen_context_create(struct pipe_screen *pscreen, void *priv,
- unsigned int flags);
-
-struct tegra_sampler_view {
- struct pipe_sampler_view base;
- struct pipe_sampler_view *gpu;
-};
-
-static inline struct tegra_sampler_view *
-to_tegra_sampler_view(struct pipe_sampler_view *view)
-{
- return (struct tegra_sampler_view *)view;
-}
-
-static inline struct pipe_sampler_view *
-tegra_sampler_view_unwrap(struct pipe_sampler_view *view)
-{
- if (!view)
- return NULL;
-
- return to_tegra_sampler_view(view)->gpu;
-}
-
-struct tegra_transfer {
- struct pipe_transfer base;
- struct pipe_transfer *gpu;
-
- unsigned int count;
- void *map;
-};
-
-static inline struct tegra_transfer *
-to_tegra_transfer(struct pipe_transfer *transfer)
-{
- return (struct tegra_transfer *)transfer;
-}
-
-#endif /* TEGRA_SCREEN_H */
diff --git a/src/gallium/drivers/tegra/tegra_resource.h b/src/gallium/drivers/tegra/tegra_resource.h
deleted file mode 100644
index 67507d6..0000000
--- a/src/gallium/drivers/tegra/tegra_resource.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#ifndef TEGRA_RESOURCE_H
-#define TEGRA_RESOURCE_H
-
-#include "pipe/p_state.h"
-
-struct winsys_handle;
-
-struct tegra_resource {
- struct pipe_resource base;
- struct pipe_resource *gpu;
-
- uint64_t modifier;
- uint32_t stride;
- uint32_t handle;
- size_t size;
-};
-
-static inline struct tegra_resource *
-to_tegra_resource(struct pipe_resource *resource)
-{
- return (struct tegra_resource *)resource;
-}
-
-static inline struct pipe_resource *
-tegra_resource_unwrap(struct pipe_resource *resource)
-{
- if (!resource)
- return NULL;
-
- return to_tegra_resource(resource)->gpu;
-}
-
-struct tegra_surface {
- struct pipe_surface base;
- struct pipe_surface *gpu;
-};
-
-static inline struct tegra_surface *
-to_tegra_surface(struct pipe_surface *surface)
-{
- return (struct tegra_surface *)surface;
-}
-
-static inline struct pipe_surface *
-tegra_surface_unwrap(struct pipe_surface *surface)
-{
- if (!surface)
- return NULL;
-
- return to_tegra_surface(surface)->gpu;
-}
-
-#endif /* TEGRA_RESOURCE_H */
diff --git a/src/gallium/drivers/tegra/tegra_screen.c b/src/gallium/drivers/tegra/tegra_screen.c
deleted file mode 100644
index 669f22a..0000000
--- a/src/gallium/drivers/tegra/tegra_screen.c
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <inttypes.h>
-#include <stdio.h>
-
-#include <sys/stat.h>
-
-#include <drm_fourcc.h>
-#include <tegra_drm.h>
-#include <xf86drm.h>
-
-#include "pipe/p_state.h"
-#include "util/u_debug.h"
-#include "util/u_inlines.h"
-
-#include "state_tracker/drm_driver.h"
-
-#include "nouveau/drm/nouveau_drm_public.h"
-
-#include "tegra_context.h"
-#include "tegra_resource.h"
-#include "tegra_screen.h"
-
-static void tegra_screen_destroy(struct pipe_screen *pscreen)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- screen->gpu->destroy(screen->gpu);
- free(pscreen);
-}
-
-static const char *
-tegra_screen_get_name(struct pipe_screen *pscreen)
-{
- return "tegra";
-}
-
-static const char *
-tegra_screen_get_vendor(struct pipe_screen *pscreen)
-{
- return "NVIDIA";
-}
-
-static const char *
-tegra_screen_get_device_vendor(struct pipe_screen *pscreen)
-{
- return "NVIDIA";
-}
-
-static int
-tegra_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_param(screen->gpu, param);
-}
-
-static float
-tegra_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_paramf(screen->gpu, param);
-}
-
-static int
-tegra_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
- enum pipe_shader_cap param)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_shader_param(screen->gpu, shader, param);
-}
-
-static int
-tegra_screen_get_video_param(struct pipe_screen *pscreen,
- enum pipe_video_profile profile,
- enum pipe_video_entrypoint entrypoint,
- enum pipe_video_cap param)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_video_param(screen->gpu, profile, entrypoint,
- param);
-}
-
-static int
-tegra_screen_get_compute_param(struct pipe_screen *pscreen,
- enum pipe_shader_ir ir_type,
- enum pipe_compute_cap param,
- void *retp)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_compute_param(screen->gpu, ir_type, param,
- retp);
-}
-
-static uint64_t
-tegra_screen_get_timestamp(struct pipe_screen *pscreen)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_timestamp(screen->gpu);
-}
-
-static boolean
-tegra_screen_is_format_supported(struct pipe_screen *pscreen,
- enum pipe_format format,
- enum pipe_texture_target target,
- unsigned sample_count,
- unsigned usage)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->is_format_supported(screen->gpu, format, target,
- sample_count, usage);
-}
-
-static boolean
-tegra_screen_is_video_format_supported(struct pipe_screen *pscreen,
- enum pipe_format format,
- enum pipe_video_profile profile,
- enum pipe_video_entrypoint entrypoint)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->is_video_format_supported(screen->gpu, format, profile,
- entrypoint);
-}
-
-static boolean
-tegra_screen_can_create_resource(struct pipe_screen *pscreen,
- const struct pipe_resource *template)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->can_create_resource(screen->gpu, template);
-}
-
-static int tegra_open_render_node(void)
-{
- drmDevicePtr *devices, device;
- int err, render = -ENOENT, fd;
- unsigned int num, i;
-
- err = drmGetDevices2(0, NULL, 0);
- if (err < 0)
- return err;
-
- num = err;
-
- devices = calloc(num, sizeof(*devices));
- if (!devices)
- return -ENOMEM;
-
- err = drmGetDevices2(0, devices, num);
- if (err < 0) {
- render = err;
- goto free;
- }
-
- for (i = 0; i < num; i++) {
- device = devices[i];
-
- if ((device->available_nodes & (1 << DRM_NODE_RENDER)) &&
- (device->bustype == DRM_BUS_PLATFORM)) {
- drmVersionPtr version;
-
- fd = open(device->nodes[DRM_NODE_RENDER], O_RDWR | O_CLOEXEC);
- if (fd < 0)
- continue;
-
- version = drmGetVersion(fd);
- if (!version) {
- close(fd);
- continue;
- }
-
- if (strcmp(version->name, "nouveau") != 0) {
- close(fd);
- continue;
- }
-
- drmFreeVersion(version);
- render = fd;
- break;
- }
- }
-
- drmFreeDevices(devices, num);
-
-free:
- free(devices);
- return render;
-}
-
-static int tegra_screen_import_resource(struct tegra_screen *screen,
- struct tegra_resource *resource,
- bool has_modifiers)
-{
- unsigned usage = PIPE_HANDLE_USAGE_READ;
- struct drm_tegra_gem_set_tiling args;
- struct winsys_handle handle;
- boolean status;
- int fd, err;
-
- memset(&handle, 0, sizeof(handle));
- handle.modifier = DRM_FORMAT_MOD_INVALID;
- handle.type = DRM_API_HANDLE_TYPE_FD;
-
- status = screen->gpu->resource_get_handle(screen->gpu, NULL, resource->gpu,
- &handle, usage);
- if (!status)
- return -EINVAL;
-
- assert(handle.modifier != DRM_FORMAT_MOD_INVALID);
-
- if (handle.modifier == DRM_FORMAT_MOD_INVALID) {
- close(handle.handle);
- return -EINVAL;
- }
-
- resource->modifier = handle.modifier;
- resource->stride = handle.stride;
- fd = handle.handle;
-
- err = drmPrimeFDToHandle(screen->fd, fd, &resource->handle);
- if (err < 0)
- err = -errno;
-
- close(fd);
-
- if (!has_modifiers) {
- memset(&args, 0, sizeof(args));
- args.handle = resource->handle;
-
- switch (handle.modifier) {
- case DRM_FORMAT_MOD_NVIDIA_TEGRA_TILED:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_TILED;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_ONE_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 0;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_TWO_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 1;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_FOUR_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 2;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_EIGHT_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 3;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_SIXTEEN_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 4;
- break;
-
- case DRM_FORMAT_MOD_NVIDIA_16BX2_BLOCK_THIRTYTWO_GOB:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK;
- args.value = 5;
- break;
-
- default:
- debug_printf("unsupported modifier %" PRIx64 ", assuming linear\n",
- handle.modifier);
- /* fall-through */
-
- case DRM_FORMAT_MOD_LINEAR:
- args.mode = DRM_TEGRA_GEM_TILING_MODE_PITCH;
- break;
- }
-
- err = drmIoctl(screen->fd, DRM_IOCTL_TEGRA_GEM_SET_TILING, &args);
- if (err < 0) {
- fprintf(stderr, "failed to set tiling parameters: %s\n",
- strerror(errno));
- err = -errno;
- goto out;
- }
- }
-
- return 0;
-
-out:
- return err;
-}
-
-static struct pipe_resource *
-tegra_screen_resource_create(struct pipe_screen *pscreen,
- const struct pipe_resource *template)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct tegra_resource *resource;
- int err;
-
- resource = calloc(1, sizeof(*resource));
- if (!resource)
- return NULL;
-
- resource->gpu = screen->gpu->resource_create(screen->gpu, template);
- if (!resource->gpu)
- goto free;
-
- /* import scanout buffers for display */
- if (template->bind & PIPE_BIND_SCANOUT) {
- err = tegra_screen_import_resource(screen, resource, false);
- if (err < 0)
- goto destroy;
- }
-
- memcpy(&resource->base, resource->gpu, sizeof(*resource->gpu));
- pipe_reference_init(&resource->base.reference, 1);
- resource->base.screen = &screen->base;
-
- return &resource->base;
-
-destroy:
- screen->gpu->resource_destroy(screen->gpu, resource->gpu);
-free:
- free(resource);
- return NULL;
-}
-
-/* XXX */
-static struct pipe_resource *
-tegra_screen_resource_create_front(struct pipe_screen *pscreen,
- const struct pipe_resource *template,
- const void *map_front_private)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct pipe_resource *resource;
-
- resource = screen->gpu->resource_create_front(screen->gpu, template,
- map_front_private);
- if (resource)
- resource->screen = pscreen;
-
- return resource;
-}
-
-static struct pipe_resource *
-tegra_screen_resource_from_handle(struct pipe_screen *pscreen,
- const struct pipe_resource *template,
- struct winsys_handle *handle,
- unsigned usage)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct tegra_resource *resource;
-
- resource = calloc(1, sizeof(*resource));
- if (!resource)
- return NULL;
-
- resource->gpu = screen->gpu->resource_from_handle(screen->gpu, template,
- handle, usage);
- if (!resource->gpu) {
- free(resource);
- return NULL;
- }
-
- memcpy(&resource->base, resource->gpu, sizeof(*resource->gpu));
- pipe_reference_init(&resource->base.reference, 1);
- resource->base.screen = &screen->base;
-
- return &resource->base;
-}
-
-/* XXX */
-static struct pipe_resource *
-tegra_screen_resource_from_user_memory(struct pipe_screen *pscreen,
- const struct pipe_resource *template,
- void *buffer)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct pipe_resource *resource;
-
- resource = screen->gpu->resource_from_user_memory(screen->gpu, template,
- buffer);
- if (resource)
- resource->screen = pscreen;
-
- return resource;
-}
-
-static boolean
-tegra_screen_resource_get_handle(struct pipe_screen *pscreen,
- struct pipe_context *pcontext,
- struct pipe_resource *presource,
- struct winsys_handle *handle,
- unsigned usage)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- boolean ret = TRUE;
-
- /*
- * Assume that KMS handles for scanout resources will only ever be used
- * to pass buffers into Tegra DRM for display. In all other cases, return
- * the Nouveau handle, assuming they will be used for sharing in DRI2/3.
- */
- if (handle->type == DRM_API_HANDLE_TYPE_KMS &&
- presource->bind & PIPE_BIND_SCANOUT) {
- handle->modifier = resource->modifier;
- handle->handle = resource->handle;
- handle->stride = resource->stride;
- } else {
- ret = screen->gpu->resource_get_handle(screen->gpu,
- context ? context->gpu : NULL,
- resource->gpu, handle, usage);
- }
-
- return ret;
-}
-
-static void
-tegra_screen_resource_destroy(struct pipe_screen *pscreen,
- struct pipe_resource *presource)
-{
- struct tegra_resource *resource = to_tegra_resource(presource);
-
- pipe_resource_reference(&resource->gpu, NULL);
- free(resource);
-}
-
-static void
-tegra_screen_flush_frontbuffer(struct pipe_screen *pscreen,
- struct pipe_resource *resource,
- unsigned int level,
- unsigned int layer,
- void *winsys_drawable_handle,
- struct pipe_box *box)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- screen->gpu->flush_frontbuffer(screen->gpu, resource, level, layer,
- winsys_drawable_handle, box);
-}
-
-static void
-tegra_screen_fence_reference(struct pipe_screen *pscreen,
- struct pipe_fence_handle **ptr,
- struct pipe_fence_handle *fence)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- screen->gpu->fence_reference(screen->gpu, ptr, fence);
-}
-
-static boolean
-tegra_screen_fence_finish(struct pipe_screen *pscreen,
- struct pipe_context *pcontext,
- struct pipe_fence_handle *fence,
- uint64_t timeout)
-{
- struct tegra_context *context = to_tegra_context(pcontext);
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->fence_finish(screen->gpu,
- context ? context->gpu : NULL,
- fence, timeout);
-}
-
-static int
-tegra_screen_fence_get_fd(struct pipe_screen *pscreen,
- struct pipe_fence_handle *fence)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->fence_get_fd(screen->gpu, fence);
-}
-
-static int
-tegra_screen_get_driver_query_info(struct pipe_screen *pscreen,
- unsigned int index,
- struct pipe_driver_query_info *info)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_driver_query_info(screen->gpu, index, info);
-}
-
-static int
-tegra_screen_get_driver_query_group_info(struct pipe_screen *pscreen,
- unsigned int index,
- struct pipe_driver_query_group_info *info)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_driver_query_group_info(screen->gpu, index, info);
-}
-
-static void
-tegra_screen_query_memory_info(struct pipe_screen *pscreen,
- struct pipe_memory_info *info)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- screen->gpu->query_memory_info(screen->gpu, info);
-}
-
-static const void *
-tegra_screen_get_compiler_options(struct pipe_screen *pscreen,
- enum pipe_shader_ir ir,
- unsigned int shader)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- const void *options = NULL;
-
- if (screen->gpu->get_compiler_options)
- options = screen->gpu->get_compiler_options(screen->gpu, ir, shader);
-
- return options;
-}
-
-static struct disk_cache *
-tegra_screen_get_disk_shader_cache(struct pipe_screen *pscreen)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->get_disk_shader_cache(screen->gpu);
-}
-
-static struct pipe_resource *
-tegra_screen_resource_create_with_modifiers(struct pipe_screen *pscreen,
- const struct pipe_resource *template,
- const uint64_t *modifiers,
- int count)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
- struct tegra_resource *resource;
- int err;
-
- resource = calloc(1, sizeof(*resource));
- if (!resource)
- return NULL;
-
- resource->gpu = screen->gpu->resource_create_with_modifiers(screen->gpu,
- template,
- modifiers,
- count);
- if (!resource->gpu)
- goto free;
-
- err = tegra_screen_import_resource(screen, resource, true);
- if (err < 0)
- goto destroy;
-
- memcpy(&resource->base, resource->gpu, sizeof(*resource->gpu));
- pipe_reference_init(&resource->base.reference, 1);
- resource->base.screen = &screen->base;
-
- return &resource->base;
-
-destroy:
- screen->gpu->resource_destroy(screen->gpu, resource->gpu);
-free:
- free(resource);
- return NULL;
-}
-
-static void tegra_screen_query_dmabuf_modifiers(struct pipe_screen *pscreen,
- enum pipe_format format,
- int max, uint64_t *modifiers,
- unsigned int *external_only,
- int *count)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- screen->gpu->query_dmabuf_modifiers(screen->gpu, format, max, modifiers,
- external_only, count);
-}
-
-static struct pipe_memory_object *
-tegra_screen_memobj_create_from_handle(struct pipe_screen *pscreen,
- struct winsys_handle *handle,
- bool dedicated)
-{
- struct tegra_screen *screen = to_tegra_screen(pscreen);
-
- return screen->gpu->memobj_create_from_handle(screen->gpu, handle,
- dedicated);
-}
-
-struct pipe_screen *
-tegra_screen_create(int fd)
-{
- struct tegra_screen *screen;
-
- screen = calloc(1, sizeof(*screen));
- if (!screen)
- return NULL;
-
- screen->fd = fd;
-
- screen->gpu_fd = tegra_open_render_node();
- if (screen->gpu_fd < 0) {
- if (errno != ENOENT)
- fprintf(stderr, "failed to open GPU device: %s\n", strerror(errno));
-
- free(screen);
- return NULL;
- }
-
- screen->gpu = nouveau_drm_screen_create(screen->gpu_fd);
- if (!screen->gpu) {
- fprintf(stderr, "failed to create GPU screen\n");
- close(screen->gpu_fd);
- free(screen);
- return NULL;
- }
-
- screen->base.destroy = tegra_screen_destroy;
- screen->base.get_name = tegra_screen_get_name;
- screen->base.get_vendor = tegra_screen_get_vendor;
- screen->base.get_device_vendor = tegra_screen_get_device_vendor;
- screen->base.get_param = tegra_screen_get_param;
- screen->base.get_paramf = tegra_screen_get_paramf;
- screen->base.get_shader_param = tegra_screen_get_shader_param;
- screen->base.get_video_param = tegra_screen_get_video_param;
- screen->base.get_compute_param = tegra_screen_get_compute_param;
- screen->base.get_timestamp = tegra_screen_get_timestamp;
- screen->base.context_create = tegra_screen_context_create;
- screen->base.is_format_supported = tegra_screen_is_format_supported;
- screen->base.is_video_format_supported = tegra_screen_is_video_format_supported;
-
- /* allow fallback implementation if GPU driver doesn't implement it */
- if (screen->gpu->can_create_resource)
- screen->base.can_create_resource = tegra_screen_can_create_resource;
-
- screen->base.resource_create = tegra_screen_resource_create;
- screen->base.resource_create_front = tegra_screen_resource_create_front;
- screen->base.resource_from_handle = tegra_screen_resource_from_handle;
- screen->base.resource_from_user_memory = tegra_screen_resource_from_user_memory;
- screen->base.resource_get_handle = tegra_screen_resource_get_handle;
- screen->base.resource_destroy = tegra_screen_resource_destroy;
-
- screen->base.flush_frontbuffer = tegra_screen_flush_frontbuffer;
- screen->base.fence_reference = tegra_screen_fence_reference;
- screen->base.fence_finish = tegra_screen_fence_finish;
- screen->base.fence_get_fd = tegra_screen_fence_get_fd;
-
- screen->base.get_driver_query_info = tegra_screen_get_driver_query_info;
- screen->base.get_driver_query_group_info = tegra_screen_get_driver_query_group_info;
- screen->base.query_memory_info = tegra_screen_query_memory_info;
-
- screen->base.get_compiler_options = tegra_screen_get_compiler_options;
- screen->base.get_disk_shader_cache = tegra_screen_get_disk_shader_cache;
-
- screen->base.resource_create_with_modifiers = tegra_screen_resource_create_with_modifiers;
- screen->base.query_dmabuf_modifiers = tegra_screen_query_dmabuf_modifiers;
- screen->base.memobj_create_from_handle = tegra_screen_memobj_create_from_handle;
-
- return &screen->base;
-}
diff --git a/src/gallium/drivers/tegra/tegra_screen.h b/src/gallium/drivers/tegra/tegra_screen.h
deleted file mode 100644
index 558d22f..0000000
--- a/src/gallium/drivers/tegra/tegra_screen.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#ifndef TEGRA_SCREEN_H
-#define TEGRA_SCREEN_H
-
-#include "pipe/p_screen.h"
-
-struct tegra_screen {
- struct pipe_screen base;
- int fd;
-
- struct pipe_screen *gpu;
- int gpu_fd;
-};
-
-static inline struct tegra_screen *
-to_tegra_screen(struct pipe_screen *pscreen)
-{
- return (struct tegra_screen *)pscreen;
-}
-
-struct pipe_screen *tegra_screen_create(int fd);
-
-#endif /* TEGRA_SCREEN_H */
diff --git a/src/gallium/meson.build b/src/gallium/meson.build
index 0239172..88e664e 100644
--- a/src/gallium/meson.build
+++ b/src/gallium/meson.build
@@ -114,12 +114,6 @@ if with_gallium_imx
else
driver_imx = declare_dependency()
endif
-if with_gallium_tegra
- subdir('winsys/tegra/drm')
- subdir('drivers/tegra')
-else
- driver_tegra = declare_dependency()
-endif
if with_gallium_i915
subdir('winsys/i915/drm')
subdir('drivers/i915')
diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
index a0778b6..9597235 100644
--- a/src/gallium/targets/dri/Makefile.am
+++ b/src/gallium/targets/dri/Makefile.am
@@ -74,8 +74,6 @@ include $(top_srcdir)/src/gallium/drivers/svga/Automake.inc
include $(top_srcdir)/src/gallium/drivers/freedreno/Automake.inc
-include $(top_srcdir)/src/gallium/drivers/tegra/Automake.inc
-
include $(top_srcdir)/src/gallium/drivers/vc4/Automake.inc
include $(top_srcdir)/src/gallium/drivers/vc5/Automake.inc
include $(top_srcdir)/src/gallium/drivers/pl111/Automake.inc
diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build
index bdbd458..0081bb6 100644
--- a/src/gallium/targets/dri/meson.build
+++ b/src/gallium/targets/dri/meson.build
@@ -57,8 +57,7 @@ libgallium_dri = shared_library(
dep_selinux, dep_expat, dep_libdrm, dep_llvm, dep_thread,
driver_swrast, driver_r300, driver_r600, driver_radeonsi, driver_nouveau,
driver_pl111, driver_vc4, driver_vc5, driver_freedreno, driver_etnaviv,
- driver_imx, driver_tegra, driver_i915, driver_svga, driver_virgl,
- driver_swr,
+ driver_imx, driver_i915, driver_svga, driver_virgl, driver_swr,
],
)
@@ -72,7 +71,6 @@ foreach d : [[with_gallium_pl111, 'pl111_dri.so'],
[with_gallium_vc5, 'vc5_dri.so'],
[with_gallium_etnaviv, 'etnaviv_dri.so'],
[with_gallium_imx, 'imx-drm_dri.so'],
- [with_gallium_tegra, 'tegra_dri.so'],
[with_gallium_i915, 'i915_dri.so'],
[with_gallium_r300, 'r300_dri.so'],
[with_gallium_r600, 'r600_dri.so'],
diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
index e09e776..5ee1761 100644
--- a/src/gallium/targets/dri/target.c
+++ b/src/gallium/targets/dri/target.c
@@ -86,7 +86,3 @@ DEFINE_LOADER_DRM_ENTRYPOINT(vc5)
DEFINE_LOADER_DRM_ENTRYPOINT(imx_drm)
DEFINE_LOADER_DRM_ENTRYPOINT(etnaviv)
#endif
-
-#if defined(GALLIUM_TEGRA)
-DEFINE_LOADER_DRM_ENTRYPOINT(tegra);
-#endif
diff --git a/src/gallium/targets/vdpau/Makefile.am b/src/gallium/targets/vdpau/Makefile.am
index cd05a02..2742c7a 100644
--- a/src/gallium/targets/vdpau/Makefile.am
+++ b/src/gallium/targets/vdpau/Makefile.am
@@ -57,8 +57,6 @@ include $(top_srcdir)/src/gallium/drivers/r300/Automake.inc
include $(top_srcdir)/src/gallium/drivers/r600/Automake.inc
include $(top_srcdir)/src/gallium/drivers/radeonsi/Automake.inc
-include $(top_srcdir)/src/gallium/drivers/tegra/Automake.inc
-
if HAVE_GALLIUM_STATIC_TARGETS
libvdpau_gallium_la_SOURCES += target.c
diff --git a/src/gallium/winsys/tegra/drm/Makefile.am b/src/gallium/winsys/tegra/drm/Makefile.am
deleted file mode 100644
index 9a81698..0000000
--- a/src/gallium/winsys/tegra/drm/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-include Makefile.sources
-include $(top_srcdir)/src/gallium/Automake.inc
-
-AM_CFLAGS = \
- -I$(top_srcdir)/src/gallium/drivers \
- $(GALLIUM_WINSYS_CFLAGS)
-
-noinst_LTLIBRARIES = libtegradrm.la
-
-libtegradrm_la_SOURCES = $(C_SOURCES)
-
-EXTRA_DIST = \
- meson.build
diff --git a/src/gallium/winsys/tegra/drm/Makefile.sources b/src/gallium/winsys/tegra/drm/Makefile.sources
deleted file mode 100644
index fe0d5c4..0000000
--- a/src/gallium/winsys/tegra/drm/Makefile.sources
+++ /dev/null
@@ -1,2 +0,0 @@
-C_SOURCES := \
- tegra_drm_winsys.c
diff --git a/src/gallium/winsys/tegra/drm/meson.build b/src/gallium/winsys/tegra/drm/meson.build
deleted file mode 100644
index 46a6ab7..0000000
--- a/src/gallium/winsys/tegra/drm/meson.build
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright © 2018 NVIDIA 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.
-
-libtegradrm = static_library(
- 'tegradrm',
- 'tegra_drm_winsys.c',
- include_directories : [
- inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_gallium_drivers,
- inc_gallium_winsys
- ],
-)
-
-driver_tegra = declare_dependency(
- compile_args : '-DGALLIUM_TEGRA',
- link_with : libtegradrm,
-)
diff --git a/src/gallium/winsys/tegra/drm/tegra_drm_public.h b/src/gallium/winsys/tegra/drm/tegra_drm_public.h
deleted file mode 100644
index 8105180..0000000
--- a/src/gallium/winsys/tegra/drm/tegra_drm_public.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#ifndef __TEGRA_DRM_PUBLIC_H__
-#define __TEGRA_DRM_PUBLIC_H__
-
-struct pipe_screen;
-
-struct pipe_screen *tegra_drm_screen_create(int fd);
-
-#endif /* __TEGRA_DRM_PUBLIC_H__ */
diff --git a/src/gallium/winsys/tegra/drm/tegra_drm_winsys.c b/src/gallium/winsys/tegra/drm/tegra_drm_winsys.c
deleted file mode 100644
index e2a8efb..0000000
--- a/src/gallium/winsys/tegra/drm/tegra_drm_winsys.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright © 2014-2018 NVIDIA 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 (including the next
- * paragraph) 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.
- */
-
-#include <fcntl.h>
-
-#include "util/u_debug.h"
-
-#include "tegra/tegra_screen.h"
-
-struct pipe_screen *tegra_drm_screen_create(int fd);
-
-struct pipe_screen *tegra_drm_screen_create(int fd)
-{
- struct pipe_screen *screen;
-
- /*
- * NOTE: There are reportedly issues with reusing the file descriptor
- * as-is related to Xinerama. Duplicate it to side-step any issues.
- */
- fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
- if (fd < 0)
- return NULL;
-
- screen = tegra_screen_create(fd);
- if (!screen)
- close(fd);
-
- return screen;
-}
--
2.7.4