summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2017-03-02 18:21:31 -0800
committerEmil Velikov <emil.l.velikov@gmail.com>2017-04-12 11:32:28 +0100
commite7f872f7b8a897e188cf7b0462867c8f0b5d9397 (patch)
tree807e321c0263ee98a86ffef6308c620f3b9c8487
parent20319f5e88837bdd4561724dbf0bfdf6da4060f1 (diff)
i965: Set screen->cmd_parser_version to 0 if we can't write registers.
If we can't write registers, then the effective command parser version is 0 - it may exist, but it's not usefully enabling anything. See kernel commit 1ca3712ca3429a617ed6c5f87718e4f6fe4ae0c6 (in v4.8) where the kernel starts doing this for us. This makes us do more or less the same thing on older kernels. This should preserve a bit of sanity by allowing us to perform a screen->cmd_parser_version > N check to determine that we really can use the features promised by command parser version N. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> (cherry picked from commit 31693a13f8fbc52d4f19f1e8800a4edabeecbe19) [Emil Velikov: resolve trivial conflicts] Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Conflicts: src/mesa/drivers/dri/i965/intel_screen.c
-rw-r--r--src/mesa/drivers/dri/i965/intel_screen.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 47c780635bf..61b001e4439 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -1839,8 +1839,18 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
* means that we can no longer use it as an indicator of the
* age of the kernel.
*/
- if (intel_detect_pipelined_so(screen))
+ if (intel_get_param(screen, I915_PARAM_CMD_PARSER_VERSION,
+ &screen->cmd_parser_version) < 0) {
+ /* Command parser does not exist - getparam is unrecognized */
+ screen->cmd_parser_version = 0;
+ }
+
+ if (!intel_detect_pipelined_so(screen)) {
+ /* We can't do anything, so the effective version is 0. */
+ screen->cmd_parser_version = 0;
+ } else {
screen->kernel_features |= KERNEL_ALLOWS_SOL_OFFSET_WRITES;
+ }
const char *force_msaa = getenv("INTEL_FORCE_MSAA");
if (force_msaa) {
@@ -1873,11 +1883,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
(ret != -1 || errno != EINVAL);
}
- if (intel_get_param(screen, I915_PARAM_CMD_PARSER_VERSION,
- &screen->cmd_parser_version) < 0) {
- screen->cmd_parser_version = 0;
- }
-
if (screen->devinfo.gen >= 8 || screen->cmd_parser_version >= 2)
screen->kernel_features |= KERNEL_ALLOWS_PREDICATE_WRITES;