summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2017-06-29 17:31:57 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2017-07-13 13:27:47 +0200
commit4333ed138ec19c989f23907aa2c13c9ea5b4fb81 (patch)
treef57ca2c17a5201980a5f553ac75d968d0f89d5fc
parent132adef7e6da013c27fa46b20e1402ee57aa4a41 (diff)
radeonsi: prepare for driver-specific driconf options
-rw-r--r--src/gallium/Automake.inc2
-rw-r--r--src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c2
-rw-r--r--src/gallium/auxiliary/target-helpers/drm_helper.h25
-rw-r--r--src/gallium/auxiliary/target-helpers/drm_helper_public.h2
-rw-r--r--src/gallium/drivers/radeonsi/Makefile.am13
-rw-r--r--src/gallium/drivers/radeonsi/Makefile.sources4
-rw-r--r--src/gallium/drivers/radeonsi/driinfo_radeonsi.h1
-rw-r--r--src/gallium/targets/pipe-loader/Makefile.am1
-rw-r--r--src/gallium/targets/pipe-loader/pipe_radeonsi.c9
9 files changed, 58 insertions, 1 deletions
diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc
index 48b5a44067..3e21aa71b5 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 d8d3878bcd..69a02838cc 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 a4fcde385f..95b4a27111 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 c540d7c58a..46819131bd 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 1edbd0fd5d..a300770201 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 1587d64621..6dc6da04e3 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 0000000000..a358f0263e
--- /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 6b116184f5..400b198fe2 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 598baf58da..2d33d0e336 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;
}