From: Nicolai Hähnle Date: Thu, 29 Jun 2017 15:31:57 +0000 (+0200) Subject: radeonsi: prepare for driver-specific driconf options X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0f8c5de8690e7c87aa2e24383065efaca7e6fe78;p=mesa.git radeonsi: prepare for driver-specific driconf options Reviewed-by: Marek Olšák --- 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; }