gallium/ilo: handle query_renderer caps
Implementation based on the classic driver with the following changes: - Use auxiliarry function os_get_total_physical_memory to get the total amount of memory. - Move the libdrm_intel specific get_aperture_size to the winsys. Cc: Chia-I Wu <olvaffe@gmail.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
parent
5b9cb13295
commit
cc313b3ffe
|
@ -301,7 +301,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
|
|||
if (!os_get_total_physical_memory(&system_memory))
|
||||
return 0;
|
||||
|
||||
return MIN2(gpu_mappable_megabytes, (int) (system_memory >> 20));
|
||||
return MIN2(gpu_mappable_megabytes, (int)(system_memory >> 20));
|
||||
}
|
||||
case PIPE_CAP_UMA:
|
||||
return 1;
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
* Chia-I Wu <olv@lunarg.com>
|
||||
*/
|
||||
|
||||
#include "os/os_misc.h"
|
||||
#include "util/u_format_s3tc.h"
|
||||
#include "vl/vl_decoder.h"
|
||||
#include "vl/vl_video_buffer.h"
|
||||
|
@ -436,6 +437,29 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
|||
case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_VENDOR_ID:
|
||||
return 0x8086;
|
||||
case PIPE_CAP_DEVICE_ID:
|
||||
return is->dev.devid;
|
||||
case PIPE_CAP_ACCELERATED:
|
||||
return true;
|
||||
case PIPE_CAP_VIDEO_MEMORY: {
|
||||
/* Once a batch uses more than 75% of the maximum mappable size, we
|
||||
* assume that there's some fragmentation, and we start doing extra
|
||||
* flushing, etc. That's the big cliff apps will care about.
|
||||
*/
|
||||
const int gpu_mappable_megabytes =
|
||||
intel_winsys_get_aperture_size(is->winsys) * 3 / 4;
|
||||
uint64_t system_memory;
|
||||
|
||||
if (!os_get_total_physical_memory(&system_memory))
|
||||
return 0;
|
||||
|
||||
return MIN2(gpu_mappable_megabytes, (int)(system_memory >> 20));
|
||||
}
|
||||
case PIPE_CAP_UMA:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -223,6 +223,16 @@ intel_winsys_get_info(const struct intel_winsys *winsys)
|
|||
return &winsys->info;
|
||||
}
|
||||
|
||||
int
|
||||
intel_winsys_get_aperture_size(const struct intel_winsys *winsys)
|
||||
{
|
||||
size_t aper_size, mappable_size;
|
||||
|
||||
drm_intel_get_aperture_sizes(winsys->fd, &mappable_size, &aper_size);
|
||||
|
||||
return aper_size >> 20;
|
||||
}
|
||||
|
||||
struct intel_context *
|
||||
intel_winsys_create_context(struct intel_winsys *winsys)
|
||||
{
|
||||
|
|
|
@ -91,6 +91,9 @@ intel_winsys_destroy(struct intel_winsys *winsys);
|
|||
const struct intel_winsys_info *
|
||||
intel_winsys_get_info(const struct intel_winsys *winsys);
|
||||
|
||||
int
|
||||
intel_winsys_get_aperture_size(const struct intel_winsys *winsys);
|
||||
|
||||
/**
|
||||
* Create a logical context for use with the render ring.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue