Re: [Mesa-dev] [PATCH 2/2] panfrost: Include glue for out-of-tree legacy code

2019-02-05 Thread Jason Ekstrand

On February 5, 2019 20:56:25 Alyssa Rosenzweig  wrote:


@@ -39,7 +39,7 @@ files_panfrost = files(
'pan_blending.c',
'pan_blend_shaders.c',
'pan_wallpaper.c',
-  'pan_pretty_print.c'
+  'pan_pretty_print.c',
)

inc_panfrost = [


This hunk seems unrelated...


..Oops, although looking at other drivers' meson.builds, it's reasonable
to have the comma there anyway for future proof, no?


I like to keep a trailing comma at the end of lists when the language 
allows it. It means that a future addition to the end of the list only has 
+ lines and not a -/+ pair to add a comma.


--Jason


___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 2/2] panfrost: Include glue for out-of-tree legacy code

2019-02-05 Thread Alyssa Rosenzweig
> > @@ -39,7 +39,7 @@ files_panfrost = files(
> >'pan_blending.c',
> >'pan_blend_shaders.c',
> >'pan_wallpaper.c',
> > -  'pan_pretty_print.c'
> > +  'pan_pretty_print.c',
> >  )
> >  
> >  inc_panfrost = [
> 
> This hunk seems unrelated...

..Oops, although looking at other drivers' meson.builds, it's reasonable
to have the comma there anyway for future proof, no?
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 2/2] panfrost: Include glue for out-of-tree legacy code

2019-02-05 Thread Erik Faye-Lund
On Tue, 2019-02-05 at 06:26 +, Alyssa Rosenzweig wrote:
> In addition to the DRM interface in active development, for legacy
> kernels Panfrost has a small, optional, out-of-tree glue repository.
> For
> various reasons, this legacy code should not be included in Mesa
> proper,
> but this commit allows it to coexist peacefully with upstream
> Panfrost.
> If the nondrm repo is cloned/symlinked to the directory
> `src/gallium/drivers/panfrost/nondrm`, legacy functionality will be
> built. Otherwise, the driver will build normally, though a runtime
> error
> message will be printed if a legacy kernel is detected.
> 
> This workaround is icky, but it allows a nearly-upstream Panfrost to
> work on real hardware, today. Ideally, this patch will be reverted
> when
> the Panfrost kernel module is mature and we drop legacy support.
> 
> Signed-off-by: Alyssa Rosenzweig 
> ---
>  src/gallium/drivers/panfrost/.gitignore|  1 +
>  src/gallium/drivers/panfrost/meson.build   | 21 ++
> ---
>  src/gallium/drivers/panfrost/pan_context.c |  3 ++-
>  src/gallium/drivers/panfrost/pan_screen.c  |  9 +++--
>  src/gallium/drivers/panfrost/pan_screen.h  |  2 +-
>  5 files changed, 29 insertions(+), 7 deletions(-)
>  create mode 100644 src/gallium/drivers/panfrost/.gitignore
> 
> diff --git a/src/gallium/drivers/panfrost/.gitignore
> b/src/gallium/drivers/panfrost/.gitignore
> new file mode 100644
> index 000..9d2c2c18bef
> --- /dev/null
> +++ b/src/gallium/drivers/panfrost/.gitignore
> @@ -0,0 +1 @@
> +nondrm
> diff --git a/src/gallium/drivers/panfrost/meson.build
> b/src/gallium/drivers/panfrost/meson.build
> index 9b90035d691..5e799eae119 100644
> --- a/src/gallium/drivers/panfrost/meson.build
> +++ b/src/gallium/drivers/panfrost/meson.build
> @@ -39,7 +39,7 @@ files_panfrost = files(
>'pan_blending.c',
>'pan_blend_shaders.c',
>'pan_wallpaper.c',
> -  'pan_pretty_print.c'
> +  'pan_pretty_print.c',
>  )
>  
>  inc_panfrost = [

This hunk seems unrelated...

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 2/2] panfrost: Include glue for out-of-tree legacy code

2019-02-04 Thread Alyssa Rosenzweig
In addition to the DRM interface in active development, for legacy
kernels Panfrost has a small, optional, out-of-tree glue repository. For
various reasons, this legacy code should not be included in Mesa proper,
but this commit allows it to coexist peacefully with upstream Panfrost.
If the nondrm repo is cloned/symlinked to the directory
`src/gallium/drivers/panfrost/nondrm`, legacy functionality will be
built. Otherwise, the driver will build normally, though a runtime error
message will be printed if a legacy kernel is detected.

This workaround is icky, but it allows a nearly-upstream Panfrost to
work on real hardware, today. Ideally, this patch will be reverted when
the Panfrost kernel module is mature and we drop legacy support.

Signed-off-by: Alyssa Rosenzweig 
---
 src/gallium/drivers/panfrost/.gitignore|  1 +
 src/gallium/drivers/panfrost/meson.build   | 21 ++---
 src/gallium/drivers/panfrost/pan_context.c |  3 ++-
 src/gallium/drivers/panfrost/pan_screen.c  |  9 +++--
 src/gallium/drivers/panfrost/pan_screen.h  |  2 +-
 5 files changed, 29 insertions(+), 7 deletions(-)
 create mode 100644 src/gallium/drivers/panfrost/.gitignore

diff --git a/src/gallium/drivers/panfrost/.gitignore 
b/src/gallium/drivers/panfrost/.gitignore
new file mode 100644
index 000..9d2c2c18bef
--- /dev/null
+++ b/src/gallium/drivers/panfrost/.gitignore
@@ -0,0 +1 @@
+nondrm
diff --git a/src/gallium/drivers/panfrost/meson.build 
b/src/gallium/drivers/panfrost/meson.build
index 9b90035d691..5e799eae119 100644
--- a/src/gallium/drivers/panfrost/meson.build
+++ b/src/gallium/drivers/panfrost/meson.build
@@ -39,7 +39,7 @@ files_panfrost = files(
   'pan_blending.c',
   'pan_blend_shaders.c',
   'pan_wallpaper.c',
-  'pan_pretty_print.c'
+  'pan_pretty_print.c',
 )
 
 inc_panfrost = [
@@ -53,6 +53,21 @@ inc_panfrost = [
   include_directories('midgard'),
 ]
 
+compile_args_panfrost = [
+  '-DGALLIUM_PANFROST',
+  '-Wno-pointer-arith'
+]
+
+overlay = join_paths(meson.source_root(), meson.current_source_dir(), 
'nondrm/pan_nondrm.c')
+nondrm_overlay_check = run_command('ls', overlay)
+has_nondrm_overlay = nondrm_overlay_check.returncode() == 0
+
+if has_nondrm_overlay
+  files_panfrost += files('nondrm/pan_nondrm.c')
+  inc_panfrost += include_directories('nondrm/include')
+  compile_args_panfrost += '-DPAN_NONDRM_OVERLAY'
+endif
+
 midgard_nir_algebraic_c = custom_target(
   'midgard_nir_algebraic.c',
   input : 'midgard/midgard_nir_algebraic.py',
@@ -73,11 +88,11 @@ libpanfrost = static_library(
 idep_nir
   ],
   include_directories : inc_panfrost,
-  c_args : [c_vis_args, c_msvc_compat_args],
+  c_args : [c_vis_args, c_msvc_compat_args, compile_args_panfrost],
 )
 
 driver_panfrost = declare_dependency(
-  compile_args : ['-DGALLIUM_PANFROST', '-Wno-pointer-arith'],
+  compile_args : compile_args_panfrost,
   link_with : [libpanfrost, libpanfrostwinsys],
 )
 
diff --git a/src/gallium/drivers/panfrost/pan_context.c 
b/src/gallium/drivers/panfrost/pan_context.c
index 0551d553182..fb4130362e0 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -1431,7 +1431,8 @@ panfrost_submit_frame(struct panfrost_context *ctx, bool 
flush_immediate)
 
 #ifndef DRY_RUN
 
-   int fragment_id = screen->driver->submit_vs_fs_job(ctx, has_draws);
+bool is_scanout = panfrost_is_scanout(ctx);
+int fragment_id = screen->driver->submit_vs_fs_job(ctx, has_draws, 
is_scanout);
 
 /* If visual, we can stall a frame */
 
diff --git a/src/gallium/drivers/panfrost/pan_screen.c 
b/src/gallium/drivers/panfrost/pan_screen.c
index 58f4f610fc7..defabf37f7c 100644
--- a/src/gallium/drivers/panfrost/pan_screen.c
+++ b/src/gallium/drivers/panfrost/pan_screen.c
@@ -49,7 +49,8 @@
 #include "pan_context.h"
 #include "midgard/midgard_compile.h"
 
-#include "pan_drm.h"
+struct panfrost_driver *panfrost_create_drm_driver(int fd);
+struct panfrost_driver *panfrost_create_nondrm_driver(int fd);
 
 static const char *
 panfrost_get_name(struct pipe_screen *screen)
@@ -684,8 +685,12 @@ panfrost_create_screen(int fd, struct renderonly *ro, bool 
is_drm)
 if (is_drm) {
 screen->driver = panfrost_create_drm_driver(fd);
 } else {
-fprintf(stderr, "Legacy (non-DRM) drivers are not supported in 
upstream Mesa\n");
+#ifdef PAN_NONDRM_OVERLAY
+screen->driver = panfrost_create_nondrm_driver(fd);
+#else
+fprintf(stderr, "Legacy (non-DRM) operation requires 
out-of-tree overlay\n");
 return NULL;
+#endif
 }
 
 #ifdef DUMP_PERFORMANCE_COUNTERS
diff --git a/src/gallium/drivers/panfrost/pan_screen.h 
b/src/gallium/drivers/panfrost/pan_screen.h
index 4c8fe8dd720..59787c8017c 100644
--- a/src/gallium/drivers/panfrost/pan_screen.h
+++ b/src/gallium/drivers/panfrost/pan_screen.h
@@ -53,7 +53,7 @@ struct panfrost_driver {
void (*unmap_bo) (struct panfrost_cont