summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2018-08-10 16:57:31 -0700
committerEric Anholt <[email protected]>2018-09-04 08:07:52 -0700
commitad782a7020216b691e860115ec15cc8c95c13630 (patch)
tree0fc62003dd85d4345006b139cb04c2a0b212c359 /src/gallium/drivers
parent67571ae79676c09b36f2e27452ed1d09697791ba (diff)
gallium: Add a helper for implementing PIPE_CAP_* default values.
One of the pains of implementing a gallium driver is filling in a million pipe caps you don't know about yet when you're just starting out. One of the pains of working on gallium is copy-and-pasting your new PIPE_CAP into each driver. We can fix both of these by having each driver call into the default helper from their default case, so that both sides can ignore each other until they need to. v2: fix i915g build, revert swr change to avoid breaking scons build (https://travis-ci.org/anholt/mesa/jobs/419739857) v3: Rebase on 3 new gallium caps. Reviewed-by: Marek Olšák <[email protected]> (v1) Cc: Bruce Cherniak <[email protected]> Cc: George Kyriazis <[email protected]> Cc: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/etnaviv/etnaviv_screen.c6
-rw-r--r--src/gallium/drivers/freedreno/freedreno_screen.c5
-rw-r--r--src/gallium/drivers/i915/i915_screen.c5
-rw-r--r--src/gallium/drivers/llvmpipe/lp_screen.c7
-rw-r--r--src/gallium/drivers/nouveau/nv30/nv30_screen.c6
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_screen.c6
-rw-r--r--src/gallium/drivers/nouveau/nvc0/nvc0_screen.c6
-rw-r--r--src/gallium/drivers/r300/r300_screen.c4
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c4
-rw-r--r--src/gallium/drivers/radeonsi/si_get.c5
-rw-r--r--src/gallium/drivers/softpipe/sp_screen.c6
-rw-r--r--src/gallium/drivers/svga/svga_screen.c6
-rw-r--r--src/gallium/drivers/v3d/v3d_screen.c4
-rw-r--r--src/gallium/drivers/vc4/vc4_screen.c4
-rw-r--r--src/gallium/drivers/virgl/virgl_screen.c6
15 files changed, 45 insertions, 35 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index 9669bd2f601..9ddba628550 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -41,6 +41,7 @@
#include "util/os_time.h"
#include "util/u_math.h"
#include "util/u_memory.h"
+#include "util/u_screen.h"
#include "util/u_string.h"
#include "state_tracker/drm_driver.h"
@@ -369,10 +370,9 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 0;
case PIPE_CAP_UMA:
return 1;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
-
- debug_printf("unknown param %d", param);
- return 0;
}
static float
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
index 489986703cd..3db241a37e2 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -35,6 +35,7 @@
#include "util/u_inlines.h"
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "util/u_string.h"
#include "util/u_debug.h"
@@ -488,9 +489,9 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
case PIPE_CAP_NATIVE_FENCE_FD:
return fd_device_version(screen->dev) >= FD_VERSION_FENCE_FD;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
- debug_printf("unknown param %d\n", param);
- return 0;
}
static float
diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c
index 103725ca5c8..1d98625f812 100644
--- a/src/gallium/drivers/i915/i915_screen.c
+++ b/src/gallium/drivers/i915/i915_screen.c
@@ -32,6 +32,7 @@
#include "util/u_format_s3tc.h"
#include "util/u_inlines.h"
#include "util/u_memory.h"
+#include "util/u_screen.h"
#include "util/u_string.h"
#include "i915_reg.h"
@@ -425,9 +426,9 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
case PIPE_CAP_COMPUTE:
case PIPE_CAP_QUERY_BUFFER_OBJECT:
return 0;
+
default:
- debug_printf("%s: Unknown cap %u.\n", __FUNCTION__, cap);
- return 0;
+ return u_pipe_screen_get_param_defaults(screen, cap);
}
}
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
index dacd9219756..93bdd426263 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -30,6 +30,7 @@
#include "util/u_math.h"
#include "util/u_cpu_detect.h"
#include "util/u_format.h"
+#include "util/u_screen.h"
#include "util/u_string.h"
#include "util/u_format_s3tc.h"
#include "pipe/p_defines.h"
@@ -378,10 +379,10 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
return 32;
case PIPE_CAP_MAX_SHADER_BUFFER_SIZE:
return 1 << 27;
+
+ default:
+ return u_pipe_screen_get_param_defaults(screen, param);
}
- /* should only get here on unhandled cases */
- debug_printf("Unexpected PIPE_CAP %d query\n", param);
- return 0;
}
static int
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
index da7ebecd5d7..719a4a84fc3 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
@@ -27,6 +27,7 @@
#include <nouveau_drm.h>
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "nv_object.xml.h"
#include "nv_m2mf.xml.h"
@@ -261,10 +262,9 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return dev->vram_size >> 20;
case PIPE_CAP_UMA:
return 0;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
-
- debug_printf("unknown param %d\n", param);
- return 0;
}
static float
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
index 0007a2b9576..d36305f3a69 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
@@ -25,6 +25,7 @@
#include <nouveau_drm.h>
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "pipe/p_screen.h"
#include "nv50/nv50_context.h"
@@ -315,10 +316,9 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return dev->vram_size >> 20;
case PIPE_CAP_UMA:
return 0;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
-
- NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
- return 0;
}
static int
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
index 4701b768bec..252cb466e07 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
@@ -25,6 +25,7 @@
#include <nvif/class.h>
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "pipe/p_screen.h"
#include "nouveau_vp3_video.h"
@@ -338,10 +339,9 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return dev->vram_size >> 20;
case PIPE_CAP_UMA:
return 0;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
-
- NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
- return 0;
}
static int
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 01a95d98dcf..2531479b53a 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -23,6 +23,7 @@
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "util/u_memory.h"
#include "util/os_time.h"
#include "vl/vl_decoder.h"
@@ -319,8 +320,9 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
return r300screen->info.pci_dev;
case PIPE_CAP_PCI_FUNCTION:
return r300screen->info.pci_func;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
- return 0;
}
static int r300_get_shader_param(struct pipe_screen *pscreen,
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index d9dae26d1c5..bcc72c8b698 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -32,6 +32,7 @@
#include "pipe/p_shader_tokens.h"
#include "util/u_debug.h"
#include "util/u_memory.h"
+#include "util/u_screen.h"
#include "util/u_simple_shaders.h"
#include "util/u_upload_mgr.h"
#include "util/u_math.h"
@@ -544,8 +545,9 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
return rscreen->b.info.pci_dev;
case PIPE_CAP_PCI_FUNCTION:
return rscreen->b.info.pci_func;
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
- return 0;
}
static int r600_get_shader_param(struct pipe_screen* pscreen,
diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
index 90f62edf470..d373c1a967d 100644
--- a/src/gallium/drivers/radeonsi/si_get.c
+++ b/src/gallium/drivers/radeonsi/si_get.c
@@ -29,6 +29,7 @@
#include "ac_llvm_util.h"
#include "vl/vl_decoder.h"
#include "vl/vl_video_buffer.h"
+#include "util/u_screen.h"
#include "util/u_video.h"
#include "compiler/nir/nir.h"
@@ -315,8 +316,10 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return sscreen->info.pci_dev;
case PIPE_CAP_PCI_FUNCTION:
return sscreen->info.pci_func;
+
+ default:
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
- return 0;
}
static float si_get_paramf(struct pipe_screen* pscreen, enum pipe_capf param)
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index db32c9e3b32..183aaae09eb 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -29,6 +29,7 @@
#include "util/u_memory.h"
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "util/u_video.h"
#include "os/os_misc.h"
#include "util/os_time.h"
@@ -332,10 +333,9 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
return 1 << 27;
case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT:
return 4;
+ default:
+ return u_pipe_screen_get_param_defaults(screen, param);
}
- /* should only get here on unhandled cases */
- debug_printf("Unexpected PIPE_CAP %d query\n", param);
- return 0;
}
static int
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
index 54c49d165f7..78ff5afbb00 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -27,6 +27,7 @@
#include "util/u_format.h"
#include "util/u_memory.h"
#include "util/u_inlines.h"
+#include "util/u_screen.h"
#include "util/u_string.h"
#include "util/u_math.h"
@@ -476,10 +477,9 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
return 32;
case PIPE_CAP_MAX_SHADER_BUFFER_SIZE:
return 1 << 27;
+ default:
+ return u_pipe_screen_get_param_defaults(screen, param);
}
-
- debug_printf("Unexpected PIPE_CAP_ query %u\n", param);
- return 0;
}
diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c
index 8a166c18fa7..11354f7ce29 100644
--- a/src/gallium/drivers/v3d/v3d_screen.c
+++ b/src/gallium/drivers/v3d/v3d_screen.c
@@ -31,6 +31,7 @@
#include "util/u_memory.h"
#include "util/u_format.h"
#include "util/u_hash_table.h"
+#include "util/u_screen.h"
#include "util/ralloc.h"
#include <xf86drm.h>
@@ -327,8 +328,7 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
default:
- fprintf(stderr, "unknown param %d\n", param);
- return 0;
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
}
diff --git a/src/gallium/drivers/vc4/vc4_screen.c b/src/gallium/drivers/vc4/vc4_screen.c
index b88110a86c5..6060c9baf2d 100644
--- a/src/gallium/drivers/vc4/vc4_screen.c
+++ b/src/gallium/drivers/vc4/vc4_screen.c
@@ -32,6 +32,7 @@
#include "util/u_memory.h"
#include "util/u_format.h"
#include "util/u_hash_table.h"
+#include "util/u_screen.h"
#include "util/ralloc.h"
#include <xf86drm.h>
@@ -369,8 +370,7 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 1;
default:
- fprintf(stderr, "unknown param %d\n", param);
- return 0;
+ return u_pipe_screen_get_param_defaults(pscreen, param);
}
}
diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
index dd97b3d3f96..bdc8a7832dc 100644
--- a/src/gallium/drivers/virgl/virgl_screen.c
+++ b/src/gallium/drivers/virgl/virgl_screen.c
@@ -23,6 +23,7 @@
#include "util/u_memory.h"
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
+#include "util/u_screen.h"
#include "util/u_video.h"
#include "util/u_math.h"
#include "util/os_time.h"
@@ -332,10 +333,9 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
return 0;
case PIPE_CAP_NATIVE_FENCE_FD:
return 0;
+ default:
+ return u_pipe_screen_get_param_defaults(screen, param);
}
- /* should only get here on unhandled cases */
- debug_printf("Unexpected PIPE_CAP %d query\n", param);
- return 0;
}
static int