Module: Mesa
Branch: main
Commit: c31be1f4bacde88ccd7177af26cb554c35472573
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c31be1f4bacde88ccd7177af26cb554c35472573

Author: Juan A. Suarez Romero <jasua...@igalia.com>
Date:   Thu Jan 11 12:32:56 2024 +0100

v3d: show warning on creating a v3d screen on real hw

Rpi4 and beyond uses vc4 hardware to handle the display.

When forcing `MESA_LOADER_DRIVER_OVERRIDE=v3d` on it, it will try to
create a screen through v3d hardware, which does not exist, and thus
fail.

This is intended to be used with the simulator on x86 hardware, so
let's print a warning in case of trying to use it with real rpi.

Reviewed-by: Alejandro PiƱeiro <apinhe...@igalia.com>
Signed-off-by: Juan A. Suarez Romero <jasua...@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27001>

---

 src/gallium/winsys/v3d/drm/meson.build      | 8 ++++++++
 src/gallium/winsys/v3d/drm/v3d_drm_winsys.c | 4 ++++
 2 files changed, 12 insertions(+)

diff --git a/src/gallium/winsys/v3d/drm/meson.build 
b/src/gallium/winsys/v3d/drm/meson.build
index 3d3cc5b3f01..258033bbae5 100644
--- a/src/gallium/winsys/v3d/drm/meson.build
+++ b/src/gallium/winsys/v3d/drm/meson.build
@@ -18,6 +18,13 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 # SOFTWARE.
 
+dep_v3dv3 = dependency('v3dv3', required: false)
+
+v3d_winsys_c_args = []
+if (dep_v3dv3.found())
+  v3d_winsys_c_args += '-DUSE_V3D_SIMULATOR'
+endif
+
 libv3dwinsys = static_library(
   'v3dwinsys',
   files('v3d_drm_winsys.c'),
@@ -25,6 +32,7 @@ libv3dwinsys = static_library(
     inc_src, inc_include,
     inc_gallium, inc_gallium_aux, inc_gallium_drivers,
   ],
+  c_args: [v3d_winsys_c_args],
   gnu_symbol_visibility : 'hidden',
   dependencies : idep_mesautil,
 )
diff --git a/src/gallium/winsys/v3d/drm/v3d_drm_winsys.c 
b/src/gallium/winsys/v3d/drm/v3d_drm_winsys.c
index 0386cde886e..7185e0d8d93 100644
--- a/src/gallium/winsys/v3d/drm/v3d_drm_winsys.c
+++ b/src/gallium/winsys/v3d/drm/v3d_drm_winsys.c
@@ -34,6 +34,10 @@
 struct pipe_screen *
 v3d_drm_screen_create(int fd, const struct pipe_screen_config *config)
 {
+#ifndef USE_V3D_SIMULATOR
+   fprintf (stderr, "Do not manually force v3d driver; hardware uses vc4 to 
create display\n");
+#endif
+
    return u_pipe_screen_lookup_or_create(os_dupfd_cloexec(fd), config,
                                          NULL, v3d_screen_create);
 }

Reply via email to