diff options
Diffstat (limited to 'src/gallium/targets/egl-static')
-rw-r--r-- | src/gallium/targets/egl-static/Android.mk | 3 | ||||
-rw-r--r-- | src/gallium/targets/egl-static/Makefile | 11 | ||||
-rw-r--r-- | src/gallium/targets/egl-static/SConscript | 3 | ||||
-rw-r--r-- | src/gallium/targets/egl-static/egl_pipe.c | 27 |
4 files changed, 43 insertions, 1 deletions
diff --git a/src/gallium/targets/egl-static/Android.mk b/src/gallium/targets/egl-static/Android.mk index 21b6dc27921..99c08120d4b 100644 --- a/src/gallium/targets/egl-static/Android.mk +++ b/src/gallium/targets/egl-static/Android.mk @@ -65,6 +65,9 @@ endif ifneq ($(filter r600g, $(MESA_GPU_DRIVERS)),) LOCAL_CFLAGS += -D_EGL_PIPE_R600=1 endif +ifneq ($(filter radeonsi, $(MESA_GPU_DRIVERS)),) +LOCAL_CFLAGS += -D_EGL_PIPE_RADEONSI=1 +endif ifneq ($(filter vmwgfx, $(MESA_GPU_DRIVERS)),) LOCAL_CFLAGS += -D_EGL_PIPE_VMWGFX=1 endif diff --git a/src/gallium/targets/egl-static/Makefile b/src/gallium/targets/egl-static/Makefile index 02a55eef160..2c6656bce5e 100644 --- a/src/gallium/targets/egl-static/Makefile +++ b/src/gallium/targets/egl-static/Makefile @@ -130,6 +130,17 @@ egl_SYS += -ldrm_radeon endif endif +# radeonsi +ifneq ($(findstring radeon/drm,$(GALLIUM_WINSYS_DIRS)),) +ifneq ($(findstring radeonsi,$(GALLIUM_DRIVERS_DIRS)),) +egl_CPPFLAGS += -D_EGL_PIPE_RADEONSI=1 +egl_LIBS += \ + $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ + $(TOP)/src/gallium/drivers/radeonsi/libradeonsi.a +egl_SYS += -ldrm_radeon +endif +endif + # vmwgfx ifneq ($(findstring svga/drm,$(GALLIUM_WINSYS_DIRS)),) egl_CPPFLAGS += -D_EGL_PIPE_VMWGFX=1 diff --git a/src/gallium/targets/egl-static/SConscript b/src/gallium/targets/egl-static/SConscript index e657e9f2ff5..d831b110764 100644 --- a/src/gallium/targets/egl-static/SConscript +++ b/src/gallium/targets/egl-static/SConscript @@ -98,11 +98,12 @@ if env['HAVE_DRM']: ]) if env['HAVE_DRM_RADEON']: - env.Append(CPPDEFINES = ['_EGL_PIPE_R300', '_EGL_PIPE_R600']) + env.Append(CPPDEFINES = ['_EGL_PIPE_R300', '_EGL_PIPE_R600', '_EGL_PIPE_RADEONSI']) env.Prepend(LIBS = [ radeonwinsys, r300, r600, + radeonsi, ]) env.Append(CPPDEFINES = ['_EGL_PIPE_VMWGFX']) diff --git a/src/gallium/targets/egl-static/egl_pipe.c b/src/gallium/targets/egl-static/egl_pipe.c index 887bcfd12c4..407c6a8f236 100644 --- a/src/gallium/targets/egl-static/egl_pipe.c +++ b/src/gallium/targets/egl-static/egl_pipe.c @@ -40,6 +40,8 @@ #include "r300/r300_public.h" /* for r600 */ #include "r600/r600_public.h" +/* for radeonsi */ +#include "radeonsi/radeonsi_public.h" /* for vmwgfx */ #include "svga/drm/svga_drm_public.h" #include "svga/svga_public.h" @@ -132,6 +134,29 @@ pipe_r600_create_screen(int fd) } static struct pipe_screen * +pipe_radeonsi_create_screen(int fd) +{ +#if _EGL_PIPE_RADEONSI + struct radeon_winsys *rw; + struct pipe_screen *screen; + + rw = radeon_drm_winsys_create(fd); + if (!rw) + return NULL; + + screen = radeonsi_screen_create(rw); + if (!screen) + return NULL; + + screen = debug_screen_wrap(screen); + + return screen; +#else + return NULL; +#endif +} + +static struct pipe_screen * pipe_vmwgfx_create_screen(int fd) { #if _EGL_PIPE_VMWGFX @@ -165,6 +190,8 @@ egl_pipe_create_drm_screen(const char *name, int fd) return pipe_r300_create_screen(fd); else if (strcmp(name, "r600") == 0) return pipe_r600_create_screen(fd); + else if (strcmp(name, "radeonsi") == 0) + return pipe_radeonsi_create_screen(fd); else if (strcmp(name, "vmwgfx") == 0) return pipe_vmwgfx_create_screen(fd); else |