summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
5a8718f)
When I was writing drm-shim, I was focused on the v3d kmsro case -- use my
intel device as the kmsro display device and add on a simulator-based v3d
device that we could render with. But for the noop backends we use for
shader-db, it's a lot more useful to just overwrite the first render node
in the system so that you don't have to pass a -d <how many render nodes I
already have in my system> argument.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4664>
#include "v3d.h"
#include "v3d_simulator_wrapper.h"
#include "v3d.h"
#include "v3d_simulator_wrapper.h"
+bool drm_shim_driver_prefers_first_render_node = false;
+
static struct v3d_device_info devinfo;
struct v3d_shim_device v3d = {
.devinfo = &devinfo
static struct v3d_device_info devinfo;
struct v3d_shim_device v3d = {
.devinfo = &devinfo
#include "drm-uapi/v3d_drm.h"
#include "drm-shim/drm_shim.h"
#include "drm-uapi/v3d_drm.h"
#include "drm-shim/drm_shim.h"
+bool drm_shim_driver_prefers_first_render_node = true;
+
struct v3d_bo {
struct shim_bo base;
uint32_t offset;
struct v3d_bo {
struct shim_bo base;
uint32_t offset;
};
static struct file_override file_overrides[10];
static int file_overrides_count;
};
static struct file_override file_overrides[10];
static int file_overrides_count;
+extern bool drm_shim_driver_prefers_first_render_node;
-/* Come up with a filename for a render node that doesn't actually exist on
- * the system.
+/* Pick the minor and filename for our shimmed render node. This can be
+ * either a new one that didn't exist on the system, or if the driver wants,
+ * it can replace the first render node.
*/
static void
get_dri_render_node_minor(void)
*/
static void
get_dri_render_node_minor(void)
asprintf(&render_node_path, "/dev/dri/%s",
render_node_dirent_name);
struct stat st;
asprintf(&render_node_path, "/dev/dri/%s",
render_node_dirent_name);
struct stat st;
- if (stat(render_node_path, &st) == -1) {
+ if (drm_shim_driver_prefers_first_render_node ||
+ stat(render_node_path, &st) == -1) {
render_node_minor = minor;
return;
render_node_minor = minor;
return;
/* driver-specific hooks. */
void drm_shim_driver_init(void);
/* driver-specific hooks. */
void drm_shim_driver_init(void);
+extern bool drm_shim_driver_prefers_new_render_node;
#include "drm-shim/drm_shim.h"
#include "util/u_debug.h"
#include "drm-shim/drm_shim.h"
#include "util/u_debug.h"
+bool drm_shim_driver_prefers_first_render_node = true;
+
struct etna_shim_gpu
{
const char *name;
struct etna_shim_gpu
{
const char *name;
#include "drm-uapi/msm_drm.h"
#include "drm-shim/drm_shim.h"
#include "drm-uapi/msm_drm.h"
#include "drm-shim/drm_shim.h"
+bool drm_shim_driver_prefers_first_render_node = true;
+
struct msm_bo {
struct shim_bo base;
uint32_t offset;
struct msm_bo {
struct shim_bo base;
uint32_t offset;