i965: Make a screen::aperture_threshold field.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 31 Mar 2017 05:27:42 +0000 (22:27 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 10 Apr 2017 21:31:55 +0000 (14:31 -0700)
This is the threshold after which drm_intel_bufmgr_check_aperture_space
returns -ENOSPC, signalling that it thinks an execbuf is likely to fail
and we need to roll back and flush the batch.

We'll need this when we rewrite aperture space checking, shortly.
In the meantime, we can also use it in GLX_MESA_query_renderer.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/intel_screen.c
src/mesa/drivers/dri/i965/intel_screen.h

index d009543e5d80de17c21b0cb5a7405a47cf6b805d..c973b448260afffc71d48520529063e5eff0a517 100644 (file)
@@ -983,10 +983,8 @@ brw_query_renderer_integer(__DRIscreen *dri_screen,
        * assume that there's some fragmentation, and we start doing extra
        * flushing, etc.  That's the big cliff apps will care about.
        */
-      uint64_t aper_size = get_aperture_size(dri_screen->fd);
-
       const unsigned gpu_mappable_megabytes =
-         (aper_size / (1024 * 1024)) * 3 / 4;
+         screen->aperture_threshold / (1024 * 1024);
 
       const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
       const long system_page_size = sysconf(_SC_PAGE_SIZE);
@@ -1860,6 +1858,8 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)
       screen->max_gtt_map_object_size = gtt_size / 4;
    }
 
+   screen->aperture_threshold = get_aperture_size(dri_screen->fd) * 3 / 4;
+
    screen->hw_has_swizzling = intel_detect_swizzling(screen);
    screen->hw_has_timestamp = intel_detect_timestamp(screen);
 
index 8c9ed1662b1721e4c8a06e237dfa322711fb02a1..f6727d95cd72dfa00852eb42756760d319c7adcf 100644 (file)
@@ -50,6 +50,9 @@ struct intel_screen
 
    uint64_t max_gtt_map_object_size;
 
+   /** Bytes of aperture usage beyond which execbuf is likely to fail. */
+   uint64_t aperture_threshold;
+
    bool no_hw;
    bool hw_has_swizzling;
    bool has_exec_fence; /**< I915_PARAM_HAS_EXEC_FENCE */