summaryrefslogtreecommitdiff
path: root/recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch
diff options
context:
space:
mode:
authorDominik Sliwa <dominik.sliwa@toradex.com>2017-12-05 14:09:23 +0000
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2017-12-20 17:16:04 +0100
commitf7ef1a83b19246e7b868f5ce3196928657a05a9f (patch)
tree485492d5948739d5fbcfc4a485e68adad1e196c6 /recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch
parent23b16552dc23ce47482dad3b7cedbf57a6d6493d (diff)
mesa: tk1 mainline: forward port patches to 17.1.7
Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Diffstat (limited to 'recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch')
-rw-r--r--recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch516
1 files changed, 0 insertions, 516 deletions
diff --git a/recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch b/recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch
deleted file mode 100644
index 022c7f0..0000000
--- a/recipes-graphics/mesa/mesa/0004-gallium-add-tegra-support.patch
+++ /dev/null
@@ -1,516 +0,0 @@
-From b1f2a37552e3ff244e3c79b609c66a63c109915a Mon Sep 17 00:00:00 2001
-From: Christian Gmeiner <christian.gmeiner@gmail.com>
-Date: Sun, 21 Aug 2016 22:10:12 +0200
-Subject: [PATCH 1/4] gallium: add tegra support
-
-Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
-[acourbot@nvidia.com: port to latest branch]
-Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
-
-forward port to mesa 17.0.2
-Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
----
- configure.ac | 13 ++++++-
- src/gallium/Makefile.am | 4 +++
- .../auxiliary/pipe-loader/pipe_loader_drm.c | 6 ++++
- src/gallium/auxiliary/target-helpers/drm_helper.h | 23 ++++++++++++
- .../auxiliary/target-helpers/drm_helper_public.h | 3 ++
- src/gallium/drivers/nouveau/nouveau_buffer.c | 3 ++
- src/gallium/drivers/nouveau/nouveau_buffer.h | 2 ++
- src/gallium/drivers/nouveau/nouveau_screen.h | 3 ++
- src/gallium/drivers/nouveau/nv50/nv50_miptree.c | 3 ++
- src/gallium/drivers/nouveau/nvc0/nvc0_resource.c | 18 ++++++++--
- src/gallium/drivers/tegra/Automake.inc | 9 +++++
- src/gallium/drivers/tegra/Makefile.am | 9 +++++
- src/gallium/targets/dri/Makefile.am | 2 ++
- src/gallium/targets/dri/target.c | 11 ++++++
- .../winsys/nouveau/drm/nouveau_drm_public.h | 2 ++
- .../winsys/nouveau/drm/nouveau_drm_winsys.c | 10 ++++++
- src/gallium/winsys/tegra/drm/Android.mk | 33 +++++++++++++++++
- src/gallium/winsys/tegra/drm/Makefile.am | 33 +++++++++++++++++
- src/gallium/winsys/tegra/drm/Makefile.sources | 3 ++
- src/gallium/winsys/tegra/drm/tegra_drm_public.h | 8 +++++
- src/gallium/winsys/tegra/drm/tegra_drm_winsys.c | 41 ++++++++++++++++++++++
- 21 files changed, 236 insertions(+), 3 deletions(-)
- create mode 100644 src/gallium/drivers/tegra/Automake.inc
- create mode 100644 src/gallium/drivers/tegra/Makefile.am
- create mode 100644 src/gallium/winsys/tegra/drm/Android.mk
- create mode 100644 src/gallium/winsys/tegra/drm/Makefile.am
- create mode 100644 src/gallium/winsys/tegra/drm/Makefile.sources
- create mode 100644 src/gallium/winsys/tegra/drm/tegra_drm_public.h
- create mode 100644 src/gallium/winsys/tegra/drm/tegra_drm_winsys.c
-
-diff --git a/configure.ac b/configure.ac
-index ac110e8..f7f94ee 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -74,6 +74,7 @@ LIBDRM_INTEL_REQUIRED=2.4.61
- LIBDRM_NVVIEUX_REQUIRED=2.4.66
- LIBDRM_NOUVEAU_REQUIRED=2.4.66
- LIBDRM_FREEDRENO_REQUIRED=2.4.74
-+LIBDRM_TEGRA_REQUIRED=2.4.68
- LIBDRM_VC4_REQUIRED=2.4.69
- LIBDRM_ETNAVIV_REQUIRED=2.4.74
- DRI2PROTO_REQUIRED=2.6
-@@ -1228,7 +1229,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,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
-+ "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx,tegra"
- @<:@default=r300,r600,svga,swrast@:>@])],
- [with_gallium_drivers="$withval"],
- [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
-@@ -2391,6 +2392,13 @@ if test -n "$with_gallium_drivers"; then
- require_libdrm "virgl"
- require_basic_egl "virgl"
- ;;
-+ xtegra)
-+ PKG_CHECK_MODULES([TEGRA], [libdrm_tegra >= $LIBDRM_TEGRA_REQUIRED])
-+ HAVE_GALLIUM_TEGRA=yes
-+ gallium_require_drm "tegra"
-+ gallium_require_drm_loader
-+ require_egl_drm "tegra"
-+ ;;
- *)
- AC_MSG_ERROR([Unknown Gallium driver: $driver])
- ;;
-@@ -2491,6 +2499,7 @@ AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
- "x$HAVE_GALLIUM_SWR" = xyes)
- AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
- AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
-+AM_CONDITIONAL(HAVE_GALLIUM_TEGRA, test "x$HAVE_GALLIUM_TEGRA" = xyes)
-
- AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
-
-@@ -2639,6 +2648,7 @@ AC_CONFIG_FILES([Makefile
- src/gallium/drivers/imx/Makefile
- src/gallium/drivers/vc4/Makefile
- src/gallium/drivers/virgl/Makefile
-+ src/gallium/drivers/tegra/Makefile
- src/gallium/state_trackers/clover/Makefile
- src/gallium/state_trackers/dri/Makefile
- src/gallium/state_trackers/glx/xlib/Makefile
-@@ -2683,6 +2693,7 @@ AC_CONFIG_FILES([Makefile
- src/gallium/winsys/vc4/drm/Makefile
- src/gallium/winsys/virgl/drm/Makefile
- src/gallium/winsys/virgl/vtest/Makefile
-+ src/gallium/winsys/tegra/drm/Makefile
- src/gbm/Makefile
- src/gbm/main/gbm.pc
- src/glx/Makefile
-diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am
-index f910f31..0f887d2 100644
---- a/src/gallium/Makefile.am
-+++ b/src/gallium/Makefile.am
-@@ -100,6 +100,10 @@ if HAVE_GALLIUM_VIRGL
- SUBDIRS += drivers/virgl winsys/virgl/drm winsys/virgl/vtest
- endif
-
-+if HAVE_GALLIUM_TEGRA
-+SUBDIRS += drivers/tegra winsys/tegra/drm
-+endif
-+
- ## the sw winsys'
- SUBDIRS += winsys/sw/null
-
-diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
-index 6c89fe5..a08d00d 100644
---- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
-+++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
-@@ -155,6 +155,11 @@ static const struct drm_driver_descriptor driver_descriptors[] = {
- .configuration = configuration_query,
- },
- {
-+ .driver_name = "tegra",
-+ .create_screen = pipe_tegra_create_screen,
-+ .configuration = configuration_query,
-+ },
-+ {
- .driver_name = "etnaviv",
- .create_screen = pipe_etna_create_screen,
- .configuration = configuration_query,
-diff --git a/src/gallium/auxiliary/target-helpers/drm_helper.h b/src/gallium/auxiliary/target-helpers/drm_helper.h
-index f847b17..ae641b9 100644
---- a/src/gallium/auxiliary/target-helpers/drm_helper.h
-+++ b/src/gallium/auxiliary/target-helpers/drm_helper.h
-@@ -313,4 +313,27 @@ pipe_imx_drm_create_screen(int fd)
- #endif
-
-
-+#ifdef GALLIUM_TEGRA
-+#include "tegra/drm/tegra_drm_public.h"
-+
-+struct pipe_screen *
-+pipe_tegra_create_screen(int fd)
-+{
-+ 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)
-+{
-+ 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 bc12b21..5525bdf 100644
---- a/src/gallium/auxiliary/target-helpers/drm_helper_public.h
-+++ b/src/gallium/auxiliary/target-helpers/drm_helper_public.h
-@@ -40,4 +40,7 @@ pipe_etna_create_screen(int fd);
- struct pipe_screen *
- pipe_imx_drm_create_screen(int fd);
-
-+struct pipe_screen *
-+pipe_tegra_create_screen(int fd);
-+
- #endif /* _DRM_HELPER_PUBLIC_H */
-diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c
-index 17052b2..95dcaad 100644
---- a/src/gallium/drivers/nouveau/nouveau_buffer.c
-+++ b/src/gallium/drivers/nouveau/nouveau_buffer.c
-@@ -128,6 +128,9 @@ nouveau_buffer_destroy(struct pipe_screen *pscreen,
-
- util_range_destroy(&res->valid_buffer_range);
-
-+ if (res->scanout)
-+ renderonly_scanout_destroy(res->scanout);
-+
- FREE(res);
-
- NOUVEAU_DRV_STAT(nouveau_screen(pscreen), buf_obj_current_count, -1);
-diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.h b/src/gallium/drivers/nouveau/nouveau_buffer.h
-index 3a33fae..c01fda4 100644
---- a/src/gallium/drivers/nouveau/nouveau_buffer.h
-+++ b/src/gallium/drivers/nouveau/nouveau_buffer.h
-@@ -50,6 +50,8 @@ struct nv04_resource {
-
- /* buffer range that has been initialized */
- struct util_range valid_buffer_range;
-+
-+ struct renderonly_scanout *scanout;
- };
-
- void
-diff --git a/src/gallium/drivers/nouveau/nouveau_screen.h b/src/gallium/drivers/nouveau/nouveau_screen.h
-index 28c4760..e0ec614 100644
---- a/src/gallium/drivers/nouveau/nouveau_screen.h
-+++ b/src/gallium/drivers/nouveau/nouveau_screen.h
-@@ -2,6 +2,7 @@
- #define __NOUVEAU_SCREEN_H__
-
- #include "pipe/p_screen.h"
-+#include "renderonly/renderonly.h"
- #include "util/u_memory.h"
-
- #ifdef DEBUG
-@@ -59,6 +60,8 @@ struct nouveau_screen {
- unsigned profiles_present;
- } firmware_info;
-
-+ struct renderonly *ro;
-+
- #ifdef NOUVEAU_ENABLE_DRIVER_STATISTICS
- union {
- uint64_t v[29];
-diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
-index f2e304f..29e95a6 100644
---- a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
-+++ b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
-@@ -189,6 +189,9 @@ nv50_miptree_get_handle(struct pipe_screen *pscreen,
- if (!mt || !mt->base.bo)
- return false;
-
-+ if (renderonly_get_handle(mt->base.scanout, whandle))
-+ return TRUE;
-+
- stride = mt->level[0].pitch;
-
- return nouveau_screen_bo_get_handle(pscreen,
-diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c b/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
-index 9bafe3d..adfd61c 100644
---- a/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
-+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
-@@ -8,12 +8,26 @@ static struct pipe_resource *
- nvc0_resource_create(struct pipe_screen *screen,
- const struct pipe_resource *templ)
- {
-+ struct nouveau_screen *scr = nouveau_screen(screen);
-+ struct pipe_resource *pres;
-+
- switch (templ->target) {
- case PIPE_BUFFER:
-- return nouveau_buffer_create(screen, templ);
-+ pres = nouveau_buffer_create(screen, templ);
-+ break;
- default:
-- return nvc0_miptree_create(screen, templ);
-+ pres = nvc0_miptree_create(screen, templ);
-+ break;
- }
-+
-+ if (pres) {
-+ struct nv04_resource *res = nv04_resource(pres);
-+
-+ if (templ->bind & PIPE_BIND_SCANOUT)
-+ res->scanout = renderonly_scanout_for_resource(pres, scr->ro);
-+ }
-+
-+ return pres;
- }
-
- static struct pipe_resource *
-diff --git a/src/gallium/drivers/tegra/Automake.inc b/src/gallium/drivers/tegra/Automake.inc
-new file mode 100644
-index 0000000..89e0441
---- /dev/null
-+++ b/src/gallium/drivers/tegra/Automake.inc
-@@ -0,0 +1,9 @@
-+if HAVE_GALLIUM_TEGRA
-+
-+TARGET_DRIVERS += tegra
-+TARGET_CPPFLAGS += -DGALLIUM_TEGRA
-+TARGET_LIB_DEPS += \
-+ $(top_builddir)/src/gallium/winsys/tegra/drm/libtegradrm.la \
-+ $(LIBDRM_LIBS)
-+
-+endif
-diff --git a/src/gallium/drivers/tegra/Makefile.am b/src/gallium/drivers/tegra/Makefile.am
-new file mode 100644
-index 0000000..30f4689
---- /dev/null
-+++ b/src/gallium/drivers/tegra/Makefile.am
-@@ -0,0 +1,9 @@
-+include $(top_srcdir)/src/gallium/Automake.inc
-+
-+AM_CPPFLAGS = \
-+ $(GALLIUM_CFLAGS) \
-+ $(TEGRA_CFLAGS)
-+
-+noinst_LTLIBRARIES = libtegra.la
-+
-+libtegra_la_SOURCES =
-diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
-index bca747f..4236da1 100644
---- a/src/gallium/targets/dri/Makefile.am
-+++ b/src/gallium/targets/dri/Makefile.am
-@@ -94,6 +94,8 @@ include $(top_srcdir)/src/gallium/drivers/virgl/Automake.inc
- include $(top_srcdir)/src/gallium/drivers/etnaviv/Automake.inc
- include $(top_srcdir)/src/gallium/drivers/imx/Automake.inc
-
-+include $(top_srcdir)/src/gallium/drivers/tegra/Automake.inc
-+
- include $(top_srcdir)/src/gallium/drivers/softpipe/Automake.inc
- include $(top_srcdir)/src/gallium/drivers/llvmpipe/Automake.inc
- include $(top_srcdir)/src/gallium/drivers/swr/Automake.inc
-diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
-index 441a27f..5e4db62 100644
---- a/src/gallium/targets/dri/target.c
-+++ b/src/gallium/targets/dri/target.c
-@@ -181,3 +181,14 @@ PUBLIC const __DRIextension **__driDriverGetExtensions_etnaviv(void)
- return galliumdrm_driver_extensions;
- }
- #endif
-+
-+#if defined(GALLIUM_TEGRA)
-+
-+const __DRIextension **__driDriverGetExtensions_tegra(void);
-+
-+PUBLIC const __DRIextension **__driDriverGetExtensions_tegra(void)
-+{
-+ globalDriverAPI = &galliumdrm_driver_api;
-+ return galliumdrm_driver_extensions;
-+}
-+#endif
-diff --git a/src/gallium/winsys/nouveau/drm/nouveau_drm_public.h b/src/gallium/winsys/nouveau/drm/nouveau_drm_public.h
-index 67b7c44..455ea77 100644
---- a/src/gallium/winsys/nouveau/drm/nouveau_drm_public.h
-+++ b/src/gallium/winsys/nouveau/drm/nouveau_drm_public.h
-@@ -3,7 +3,9 @@
- #define __NOUVEAU_DRM_PUBLIC_H__
-
- struct pipe_screen;
-+struct renderonly;
-
- struct pipe_screen *nouveau_drm_screen_create(int drmFD);
-+struct pipe_screen *nouveau_drm_screen_create_renderonly(int fd, struct renderonly *ro);
-
- #endif
-diff --git a/src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c b/src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c
-index cc9dfa7..acbd3fe 100644
---- a/src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c
-+++ b/src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c
-@@ -157,3 +157,13 @@ err:
- pipe_mutex_unlock(nouveau_screen_mutex);
- return NULL;
- }
-+
-+struct pipe_screen *nouveau_drm_screen_create_renderonly(int fd, struct renderonly *ro)
-+{
-+ struct nouveau_screen *screen = nouveau_drm_screen_create(fd);
-+
-+ if (screen)
-+ screen->ro = ro;
-+
-+ return screen;
-+}
-diff --git a/src/gallium/winsys/tegra/drm/Android.mk b/src/gallium/winsys/tegra/drm/Android.mk
-new file mode 100644
-index 0000000..a48dca4
---- /dev/null
-+++ b/src/gallium/winsys/tegra/drm/Android.mk
-@@ -0,0 +1,33 @@
-+# Copyright (C) 2014 Emil Velikov <emil.l.velikov@gmail.com>
-+#
-+# 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.
-+
-+LOCAL_PATH := $(call my-dir)
-+
-+# get C_SOURCES
-+include $(LOCAL_PATH)/Makefile.sources
-+
-+include $(CLEAR_VARS)
-+
-+LOCAL_SRC_FILES := $(C_SOURCES)
-+
-+LOCAL_MODULE := libmesa_winsys_tegra
-+
-+include $(GALLIUM_COMMON_MK)
-+include $(BUILD_STATIC_LIBRARY)
-diff --git a/src/gallium/winsys/tegra/drm/Makefile.am b/src/gallium/winsys/tegra/drm/Makefile.am
-new file mode 100644
-index 0000000..39068fe
---- /dev/null
-+++ b/src/gallium/winsys/tegra/drm/Makefile.am
-@@ -0,0 +1,33 @@
-+# Copyright © 2012 Intel Corporation
-+#
-+# Permission is hereby granted, free of charge, to any person obtaining a
-+# copy of this software and associated documentation files (the "Software"),
-+# to deal in the Software without restriction, including without limitation
-+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-+# and/or sell copies of the Software, and to permit persons to whom the
-+# Software is furnished to do so, subject to the following conditions:
-+#
-+# The above copyright notice and this permission notice (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 Makefile.sources
-+include $(top_srcdir)/src/gallium/Automake.inc
-+
-+AM_CFLAGS = \
-+ -I$(top_srcdir)/src/gallium/drivers \
-+ $(GALLIUM_WINSYS_CFLAGS) \
-+ $(TEGRA_CFLAGS)
-+
-+noinst_LTLIBRARIES = libtegradrm.la
-+
-+libtegradrm_la_SOURCES = $(C_SOURCES)
-diff --git a/src/gallium/winsys/tegra/drm/Makefile.sources b/src/gallium/winsys/tegra/drm/Makefile.sources
-new file mode 100644
-index 0000000..29a0edc
---- /dev/null
-+++ b/src/gallium/winsys/tegra/drm/Makefile.sources
-@@ -0,0 +1,3 @@
-+C_SOURCES := \
-+ tegra_drm_public.h \
-+ tegra_drm_winsys.c
-diff --git a/src/gallium/winsys/tegra/drm/tegra_drm_public.h b/src/gallium/winsys/tegra/drm/tegra_drm_public.h
-new file mode 100644
-index 0000000..813268f
---- /dev/null
-+++ b/src/gallium/winsys/tegra/drm/tegra_drm_public.h
-@@ -0,0 +1,8 @@
-+#ifndef __TEGRA_DRM_PUBLIC_H__
-+#define __TEGRA_DRM_PUBLIC_H__
-+
-+struct pipe_screen;
-+
-+struct pipe_screen *tegra_drm_screen_create(int drmFD);
-+
-+#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
-new file mode 100644
-index 0000000..361370d
---- /dev/null
-+++ b/src/gallium/winsys/tegra/drm/tegra_drm_winsys.c
-@@ -0,0 +1,41 @@
-+#include "tegra_drm_public.h"
-+
-+#include "renderonly/renderonly.h"
-+#include "../winsys/nouveau/drm/nouveau_drm_public.h"
-+
-+#include <fcntl.h>
-+#include <libdrm/tegra_drm.h>
-+#include <xf86drm.h>
-+
-+static struct pipe_screen *
-+tegra_create(struct renderonly *ro)
-+{
-+ int fd = open("/dev/dri/renderD128", O_RDWR | O_CLOEXEC);
-+
-+ if (fd == -1)
-+ return NULL;
-+
-+ return nouveau_drm_screen_create_renderonly(fd, ro);
-+}
-+
-+static int
-+tegra_tiling(int fd, uint32_t handle)
-+{
-+ struct drm_tegra_gem_set_tiling args = {
-+ .handle = handle,
-+ .mode = DRM_TEGRA_GEM_TILING_MODE_BLOCK,
-+ .value = 4
-+ };
-+
-+ return drmIoctl(fd, DRM_IOCTL_TEGRA_GEM_SET_TILING, &args);
-+}
-+
-+static const struct renderonly_ops ro_ops = {
-+ .create = tegra_create,
-+ .tiling = tegra_tiling
-+};
-+
-+struct pipe_screen *tegra_drm_screen_create(int fd)
-+{
-+ return renderonly_screen_create(fd, &ro_ops, NULL);
-+}
---
-2.9.3
-