From 0f8c5de8690e7c87aa2e24383065efaca7e6fe78 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Thu, 29 Jun 2017 17:31:57 +0200 Subject: [PATCH] radeonsi: prepare for driver-specific driconf options MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/gallium/Automake.inc | 2 ++ .../auxiliary/pipe-loader/pipe_loader_drm.c | 2 +- .../auxiliary/target-helpers/drm_helper.h | 25 +++++++++++++++++++ .../target-helpers/drm_helper_public.h | 2 ++ src/gallium/drivers/radeonsi/Makefile.am | 13 ++++++++++ src/gallium/drivers/radeonsi/Makefile.sources | 4 +++ .../drivers/radeonsi/driinfo_radeonsi.h | 1 + src/gallium/targets/pipe-loader/Makefile.am | 1 + .../targets/pipe-loader/pipe_radeonsi.c | 9 +++++++ 9 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/gallium/drivers/radeonsi/driinfo_radeonsi.h diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc index 48b5a440674..3e21aa71b5c 100644 --- a/src/gallium/Automake.inc +++ b/src/gallium/Automake.inc @@ -39,6 +39,8 @@ GALLIUM_TARGET_CFLAGS = \ -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gallium/drivers \ -I$(top_srcdir)/src/gallium/winsys \ + -I$(top_builddir)/src/util/ \ + -I$(top_builddir)/src/gallium/drivers/ \ $(DEFINES) \ $(PTHREAD_CFLAGS) \ $(LIBDRM_CFLAGS) \ diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c index d8d3878bcd5..69a02838cc3 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c @@ -88,7 +88,7 @@ static const struct drm_driver_descriptor driver_descriptors[] = { { .driver_name = "radeonsi", .create_screen = pipe_radeonsi_create_screen, - .configuration = pipe_default_configuration_query, + .configuration = pipe_radeonsi_configuration_query, }, { .driver_name = "vmwgfx", diff --git a/src/gallium/auxiliary/target-helpers/drm_helper.h b/src/gallium/auxiliary/target-helpers/drm_helper.h index a4fcde385f2..95b4a27111c 100644 --- a/src/gallium/auxiliary/target-helpers/drm_helper.h +++ b/src/gallium/auxiliary/target-helpers/drm_helper.h @@ -5,6 +5,7 @@ #include "target-helpers/inline_debug_helper.h" #include "target-helpers/drm_helper_public.h" #include "state_tracker/drm_driver.h" +#include "util/xmlpool.h" static const struct drm_conf_ret throttle_ret = { .type = DRM_CONF_INT, @@ -175,6 +176,24 @@ pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config) return rw ? debug_screen_wrap(rw->screen) : NULL; } +const struct drm_conf_ret * +pipe_radeonsi_configuration_query(enum drm_conf conf) +{ + static const struct drm_conf_ret xml_options_ret = { + .type = DRM_CONF_POINTER, + .val.val_pointer = +#include "radeonsi/si_driinfo.h" + }; + + switch (conf) { + case DRM_CONF_XML_OPTIONS: + return &xml_options_ret; + default: + break; + } + return pipe_default_configuration_query(conf); +} + #else struct pipe_screen * @@ -184,6 +203,12 @@ pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config) return NULL; } +const struct drm_conf_ret * +pipe_radeonsi_configuration_query(enum drm_conf conf) +{ + return NULL; +} + #endif #ifdef GALLIUM_VMWGFX diff --git a/src/gallium/auxiliary/target-helpers/drm_helper_public.h b/src/gallium/auxiliary/target-helpers/drm_helper_public.h index c540d7c58a6..46819131bda 100644 --- a/src/gallium/auxiliary/target-helpers/drm_helper_public.h +++ b/src/gallium/auxiliary/target-helpers/drm_helper_public.h @@ -24,6 +24,8 @@ pipe_r600_create_screen(int fd, const struct pipe_screen_config *config); struct pipe_screen * pipe_radeonsi_create_screen(int fd, const struct pipe_screen_config *config); +const struct drm_conf_ret * +pipe_radeonsi_configuration_query(enum drm_conf conf); struct pipe_screen * pipe_vmwgfx_create_screen(int fd, const struct pipe_screen_config *config); diff --git a/src/gallium/drivers/radeonsi/Makefile.am b/src/gallium/drivers/radeonsi/Makefile.am index 1edbd0fd5dd..a3007702014 100644 --- a/src/gallium/drivers/radeonsi/Makefile.am +++ b/src/gallium/drivers/radeonsi/Makefile.am @@ -34,3 +34,16 @@ AM_CFLAGS = \ noinst_LTLIBRARIES = libradeonsi.la libradeonsi_la_SOURCES = $(C_SOURCES) + +GEN_DRIINFO_INPUTS = \ + $(top_srcdir)/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h \ + $(srcdir)/driinfo_radeonsi.h + +PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS) +MERGE_DRIINFO = $(top_srcdir)/src/util/merge_driinfo.py + +si_driinfo.h: $(MERGE_DRIINFO) $(GEN_DRIINFO_INPUTS) + $(PYTHON_GEN) $(MERGE_DRIINFO) $(GEN_DRIINFO_INPUTS) > $@ || ($(RM) $@; false) + +BUILT_SOURCES = $(GENERATED_SOURCES) +CLEANFILES = $(GENERATED_SOURCES) diff --git a/src/gallium/drivers/radeonsi/Makefile.sources b/src/gallium/drivers/radeonsi/Makefile.sources index 1587d646215..6dc6da04e3a 100644 --- a/src/gallium/drivers/radeonsi/Makefile.sources +++ b/src/gallium/drivers/radeonsi/Makefile.sources @@ -1,4 +1,8 @@ +GENERATED_SOURCES := \ + si_driinfo.h + C_SOURCES := \ + $(GENERATED_SOURCES) \ cik_sdma.c \ si_blit.c \ si_compute.c \ diff --git a/src/gallium/drivers/radeonsi/driinfo_radeonsi.h b/src/gallium/drivers/radeonsi/driinfo_radeonsi.h new file mode 100644 index 00000000000..a358f0263e4 --- /dev/null +++ b/src/gallium/drivers/radeonsi/driinfo_radeonsi.h @@ -0,0 +1 @@ +// DriConf options specific to radeonsi diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am index 6b116184f5b..400b198fe29 100644 --- a/src/gallium/targets/pipe-loader/Makefile.am +++ b/src/gallium/targets/pipe-loader/Makefile.am @@ -27,6 +27,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/gallium/drivers \ -I$(top_srcdir)/src/gallium/winsys \ + -I$(top_builddir)/src/util \ $(GALLIUM_PIPE_LOADER_DEFINES) \ $(LIBDRM_CFLAGS) \ $(VISIBILITY_CFLAGS) \ diff --git a/src/gallium/targets/pipe-loader/pipe_radeonsi.c b/src/gallium/targets/pipe-loader/pipe_radeonsi.c index 598baf58da3..2d33d0e336c 100644 --- a/src/gallium/targets/pipe-loader/pipe_radeonsi.c +++ b/src/gallium/targets/pipe-loader/pipe_radeonsi.c @@ -4,6 +4,7 @@ #include "radeon/radeon_winsys.h" #include "amdgpu/drm/amdgpu_public.h" #include "radeonsi/si_public.h" +#include "util/xmlpool.h" static struct pipe_screen * create_screen(int fd, const struct pipe_screen_config *config) @@ -31,11 +32,19 @@ static const struct drm_conf_ret share_fd_ret = { static const struct drm_conf_ret *drm_configuration(enum drm_conf conf) { + static const struct drm_conf_ret xml_options_ret = { + .type = DRM_CONF_POINTER, + .val.val_pointer = +#include "radeonsi/si_driinfo.h" + }; + switch (conf) { case DRM_CONF_THROTTLE: return &throttle_ret; case DRM_CONF_SHARE_FD: return &share_fd_ret; + case DRM_CONF_XML_OPTIONS: + return &xml_options_ret; default: break; } -- 2.30.2