mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 10:10:09 +01:00
intel: Add and use intel_gem_get_param()
Again sharing the same function across all Intel drivers. Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19425>
This commit is contained in:
parent
c076aeb865
commit
dfd20f002f
19 changed files with 80 additions and 174 deletions
|
|
@ -1589,18 +1589,6 @@ crocus_destroy_hw_context(struct crocus_bufmgr *bufmgr, uint32_t ctx_id)
|
|||
}
|
||||
}
|
||||
|
||||
static int
|
||||
gem_param(int fd, int name)
|
||||
{
|
||||
int v = -1; /* No param uses (yet) the sign bit, reserve it for errors */
|
||||
|
||||
struct drm_i915_getparam gp = { .param = name, .value = &v };
|
||||
if (intel_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp))
|
||||
return -1;
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the GEM buffer manager, which uses the kernel to allocate, map,
|
||||
* and manage map buffer objections.
|
||||
|
|
@ -1634,7 +1622,9 @@ crocus_bufmgr_create(struct intel_device_info *devinfo, int fd, bool bo_reuse)
|
|||
bufmgr->has_llc = devinfo->has_llc;
|
||||
bufmgr->has_tiling_uapi = devinfo->has_tiling_uapi;
|
||||
bufmgr->bo_reuse = bo_reuse;
|
||||
bufmgr->has_mmap_offset = gem_param(fd, I915_PARAM_MMAP_GTT_VERSION) >= 4;
|
||||
int val;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION, &val) && val >= 4)
|
||||
bufmgr->has_mmap_offset = true;
|
||||
|
||||
init_cache_buckets(bufmgr);
|
||||
|
||||
|
|
|
|||
|
|
@ -2340,18 +2340,6 @@ static struct intel_mapped_pinned_buffer_alloc aux_map_allocator = {
|
|||
.free = intel_aux_map_buffer_free,
|
||||
};
|
||||
|
||||
static int
|
||||
gem_param(int fd, int name)
|
||||
{
|
||||
int v = -1; /* No param uses (yet) the sign bit, reserve it for errors */
|
||||
|
||||
struct drm_i915_getparam gp = { .param = name, .value = &v };
|
||||
if (intel_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp))
|
||||
return -1;
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
static bool
|
||||
iris_bufmgr_get_meminfo(struct iris_bufmgr *bufmgr,
|
||||
struct intel_device_info *devinfo)
|
||||
|
|
@ -2420,9 +2408,11 @@ iris_bufmgr_create(struct intel_device_info *devinfo, int fd, bool bo_reuse)
|
|||
bufmgr->has_local_mem = devinfo->has_local_mem;
|
||||
bufmgr->has_tiling_uapi = devinfo->has_tiling_uapi;
|
||||
bufmgr->bo_reuse = bo_reuse;
|
||||
bufmgr->has_mmap_offset = gem_param(fd, I915_PARAM_MMAP_GTT_VERSION) >= 4;
|
||||
bufmgr->has_userptr_probe =
|
||||
gem_param(fd, I915_PARAM_HAS_USERPTR_PROBE) >= 1;
|
||||
int val;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION, &val) && val >= 4)
|
||||
bufmgr->has_mmap_offset = true;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_USERPTR_PROBE, &val) && val >= 1)
|
||||
bufmgr->has_userptr_probe = true;
|
||||
iris_bufmgr_get_meminfo(bufmgr, devinfo);
|
||||
bufmgr->all_vram_mappable = intel_vram_all_mappable(devinfo);
|
||||
|
||||
|
|
|
|||
|
|
@ -680,28 +680,6 @@ iris_get_disk_shader_cache(struct pipe_screen *pscreen)
|
|||
return screen->disk_cache;
|
||||
}
|
||||
|
||||
static int
|
||||
iris_getparam(int fd, int param, int *value)
|
||||
{
|
||||
struct drm_i915_getparam gp = { .param = param, .value = value };
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp) == -1)
|
||||
return -errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
iris_getparam_integer(int fd, int param)
|
||||
{
|
||||
int value = -1;
|
||||
|
||||
if (iris_getparam(fd, param, &value) == 0)
|
||||
return value;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static const struct intel_l3_config *
|
||||
iris_get_default_l3_config(const struct intel_device_info *devinfo,
|
||||
bool compute)
|
||||
|
|
@ -806,7 +784,8 @@ iris_screen_create(int fd, const struct pipe_screen_config *config)
|
|||
*
|
||||
* Checking the last feature availability will include all previous ones.
|
||||
*/
|
||||
if (iris_getparam_integer(fd, I915_PARAM_HAS_CONTEXT_ISOLATION) <= 0) {
|
||||
int v;
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION, &v) || !v) {
|
||||
debug_error("Kernel is too old (4.16+ required) or unusable for Iris.\n"
|
||||
"Check your dmesg logs for loading failures.\n");
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include "i915_drm_public.h"
|
||||
#include "util/u_memory.h"
|
||||
|
||||
#include "intel/common/intel_gem.h"
|
||||
|
||||
/*
|
||||
* Helper functions
|
||||
|
|
@ -18,14 +19,7 @@
|
|||
static void
|
||||
i915_drm_get_device_id(int fd, unsigned int *device_id)
|
||||
{
|
||||
int ret;
|
||||
struct drm_i915_getparam gp;
|
||||
|
||||
gp.param = I915_PARAM_CHIPSET_ID;
|
||||
gp.value = (int *)device_id;
|
||||
|
||||
ret = ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp));
|
||||
assert(ret == 0);
|
||||
assert(intel_gem_get_param(fd, I915_PARAM_CHIPSET_ID, (int *)&device_id));
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -53,7 +47,7 @@ struct i915_winsys *
|
|||
i915_drm_winsys_create(int drmFD)
|
||||
{
|
||||
struct i915_drm_winsys *idws;
|
||||
unsigned int deviceID;
|
||||
unsigned int deviceID = 0;
|
||||
|
||||
idws = CALLOC_STRUCT(i915_drm_winsys);
|
||||
if (!idws)
|
||||
|
|
|
|||
|
|
@ -27,5 +27,6 @@ libi915drm = static_library(
|
|||
include_directories : [
|
||||
inc_include, inc_src, inc_gallium, inc_gallium_aux, inc_gallium_drivers
|
||||
],
|
||||
link_with : [libintel_common],
|
||||
dependencies : [dep_libdrm, dep_libdrm_intel],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -250,3 +250,13 @@ intel_gem_supports_protected_context(int fd)
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool
|
||||
intel_gem_get_param(int fd, uint32_t param, int *value)
|
||||
{
|
||||
drm_i915_getparam_t gp = {
|
||||
.param = param,
|
||||
.value = value,
|
||||
};
|
||||
return intel_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,6 +174,7 @@ intel_gem_get_context_param(int fd, uint32_t context, uint32_t param,
|
|||
uint64_t *value);
|
||||
|
||||
bool intel_gem_read_render_timestamp(int fd, uint64_t *value);
|
||||
bool intel_gem_get_param(int fd, uint32_t param, int *value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "c99_compat.h"
|
||||
#include "common/intel_gem.h"
|
||||
#include "dev/intel_device_info.h"
|
||||
#include "intel_gem.h"
|
||||
#include "drm-uapi/i915_drm.h"
|
||||
#include "genxml/gen_macros.h"
|
||||
#include "util/macros.h"
|
||||
|
|
@ -189,11 +190,8 @@ mi_builder_test::SetUp()
|
|||
* --device option with it.
|
||||
*/
|
||||
int device_id;
|
||||
drm_i915_getparam getparam = drm_i915_getparam();
|
||||
getparam.param = I915_PARAM_CHIPSET_ID;
|
||||
getparam.value = &device_id;
|
||||
ASSERT_EQ(drmIoctl(fd, DRM_IOCTL_I915_GETPARAM,
|
||||
(void *)&getparam), 0) << strerror(errno);
|
||||
ASSERT_TRUE(intel_gem_get_param(fd, I915_PARAM_CHIPSET_ID, &device_id))
|
||||
<< strerror(errno);
|
||||
|
||||
ASSERT_TRUE(intel_get_device_info_from_pci_id(device_id, &devinfo));
|
||||
if (devinfo.ver != GFX_VER ||
|
||||
|
|
@ -215,11 +213,8 @@ mi_builder_test::SetUp()
|
|||
if (GFX_VER >= 8) {
|
||||
/* On gfx8+, we require softpin */
|
||||
int has_softpin;
|
||||
drm_i915_getparam getparam = drm_i915_getparam();
|
||||
getparam.param = I915_PARAM_HAS_EXEC_SOFTPIN;
|
||||
getparam.value = &has_softpin;
|
||||
ASSERT_EQ(drmIoctl(fd, DRM_IOCTL_I915_GETPARAM,
|
||||
(void *)&getparam), 0) << strerror(errno);
|
||||
ASSERT_TRUE(intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN, &has_softpin))
|
||||
<< strerror(errno);
|
||||
ASSERT_TRUE(has_softpin);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -580,18 +580,9 @@ load_pipeline_statistic_metrics(struct intel_perf_config *perf_cfg,
|
|||
static int
|
||||
i915_perf_version(int drm_fd)
|
||||
{
|
||||
int tmp;
|
||||
drm_i915_getparam_t gp = {
|
||||
.param = I915_PARAM_PERF_REVISION,
|
||||
.value = &tmp,
|
||||
};
|
||||
|
||||
int ret = intel_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||
|
||||
/* Return 0 if this getparam is not supported, the first version supported
|
||||
* is 1.
|
||||
*/
|
||||
return ret < 0 ? 0 : tmp;
|
||||
int tmp = 0;
|
||||
intel_gem_get_param(drm_fd, I915_PARAM_PERF_REVISION, &tmp);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
|
||||
#include "dev/intel_debug.h"
|
||||
#include "dev/intel_device_info.h"
|
||||
#include "common/intel_gem.h"
|
||||
#include "util/macros.h"
|
||||
|
||||
static int close_init_helper(int fd);
|
||||
|
|
@ -410,16 +411,12 @@ close(int fd)
|
|||
static int
|
||||
get_pci_id(int fd, int *pci_id)
|
||||
{
|
||||
struct drm_i915_getparam gparam;
|
||||
|
||||
if (device_override) {
|
||||
*pci_id = device;
|
||||
return 0;
|
||||
}
|
||||
|
||||
gparam.param = I915_PARAM_CHIPSET_ID;
|
||||
gparam.value = pci_id;
|
||||
return libc_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gparam);
|
||||
return intel_gem_get_param(fd, I915_PARAM_CHIPSET_ID, pci_id) ? 0 : -1;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ libintel_dump_gpu = shared_library(
|
|||
),
|
||||
dependencies : [dep_dl, idep_mesautil],
|
||||
include_directories : [inc_include, inc_src, inc_intel],
|
||||
link_with : libintel_dev,
|
||||
link_with : [libintel_dev, libintel_common],
|
||||
c_args : [no_override_init_args],
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
install_dir : get_option('libexecdir'),
|
||||
|
|
|
|||
|
|
@ -741,41 +741,43 @@ static VkResult
|
|||
anv_i915_physical_device_get_parameters(struct anv_physical_device *device)
|
||||
{
|
||||
VkResult result = VK_SUCCESS;
|
||||
int fd = device->local_fd;
|
||||
int val, fd = device->local_fd;
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_WAIT_TIMEOUT)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_WAIT_TIMEOUT, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing gem wait");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_EXECBUF2)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_EXECBUF2, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing execbuf2");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!device->info.has_llc &&
|
||||
anv_gem_get_param(fd, I915_PARAM_MMAP_VERSION) < 1) {
|
||||
(!intel_gem_get_param(fd, I915_PARAM_MMAP_VERSION, &val) || val < 1)) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing wc mmap");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing softpin");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing syncobj support");
|
||||
return result;
|
||||
}
|
||||
|
||||
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
|
||||
device->has_exec_capture = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC, &val))
|
||||
device->has_exec_async = val;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE, &val))
|
||||
device->has_exec_capture = val;
|
||||
|
||||
/* Start with medium; sorted low to high */
|
||||
const VkQueueGlobalPriorityKHR priorities[] = {
|
||||
|
|
@ -791,17 +793,17 @@ anv_i915_physical_device_get_parameters(struct anv_physical_device *device)
|
|||
device->max_context_priority = priorities[i];
|
||||
}
|
||||
|
||||
device->has_context_isolation =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION, &val))
|
||||
device->has_context_isolation = val;
|
||||
|
||||
device->has_exec_timeline =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_TIMELINE_FENCES);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_TIMELINE_FENCES, &val))
|
||||
device->has_exec_timeline = val;
|
||||
|
||||
device->has_mmap_offset =
|
||||
anv_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION) >= 4;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION, &val))
|
||||
device->has_mmap_offset = val >= 4;
|
||||
|
||||
device->has_userptr_probe =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_USERPTR_PROBE);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_USERPTR_PROBE, &val))
|
||||
device->has_userptr_probe = val;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -975,10 +977,11 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
if (instance->vk.enabled_extensions.KHR_display) {
|
||||
master_fd = open(primary_path, O_RDWR | O_CLOEXEC);
|
||||
if (master_fd >= 0) {
|
||||
int val;
|
||||
/* prod the device with a GETPARAM call which will fail if
|
||||
* we don't have permission to even render on this device
|
||||
*/
|
||||
if (anv_gem_get_param(master_fd, I915_PARAM_CHIPSET_ID) == 0) {
|
||||
if (!intel_gem_get_param(master_fd, I915_PARAM_CHIPSET_ID, &val) || !val) {
|
||||
close(master_fd);
|
||||
master_fd = -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -278,23 +278,6 @@ anv_gem_set_tiling(struct anv_device *device,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_get_param(int fd, uint32_t param)
|
||||
{
|
||||
int tmp;
|
||||
|
||||
drm_i915_getparam_t gp = {
|
||||
.param = param,
|
||||
.value = &tmp,
|
||||
};
|
||||
|
||||
int ret = intel_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||
if (ret == 0)
|
||||
return tmp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
anv_gem_has_context_priority(int fd, VkQueueGlobalPriorityKHR priority)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -118,12 +118,6 @@ anv_gem_set_caching(struct anv_device *device, uint32_t gem_handle,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_get_param(int fd, uint32_t param)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_set_context_param(int fd, uint32_t context, uint32_t param, uint64_t value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1349,7 +1349,6 @@ int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
|
|||
bool anv_gem_has_context_priority(int fd, VkQueueGlobalPriorityKHR priority);
|
||||
int anv_gem_set_context_param(int fd, uint32_t context, uint32_t param,
|
||||
uint64_t value);
|
||||
int anv_gem_get_param(int fd, uint32_t param);
|
||||
int anv_gem_get_tiling(struct anv_device *device, uint32_t gem_handle);
|
||||
int anv_gem_context_get_reset_stats(int fd, int context,
|
||||
uint32_t *active, uint32_t *pending);
|
||||
|
|
|
|||
|
|
@ -741,31 +741,31 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
|
||||
device->cmd_parser_version = -1;
|
||||
if (device->info.ver == 7) {
|
||||
device->cmd_parser_version =
|
||||
anv_gem_get_param(fd, I915_PARAM_CMD_PARSER_VERSION);
|
||||
if (device->cmd_parser_version == -1) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_CMD_PARSER_VERSION, &device->cmd_parser_version) ||
|
||||
device->cmd_parser_version == -1) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"failed to get command parser version");
|
||||
goto fail_base;
|
||||
}
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_WAIT_TIMEOUT)) {
|
||||
int val;
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_WAIT_TIMEOUT, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing gem wait");
|
||||
goto fail_base;
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_EXECBUF2)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_EXECBUF2, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing execbuf2");
|
||||
goto fail_base;
|
||||
}
|
||||
|
||||
if (!device->info.has_llc &&
|
||||
anv_gem_get_param(fd, I915_PARAM_MMAP_VERSION) < 1) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing wc mmap");
|
||||
(!intel_gem_get_param(fd, I915_PARAM_MMAP_VERSION, &val) || val < 1)) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing wc mmap");
|
||||
goto fail_base;
|
||||
}
|
||||
|
||||
|
|
@ -773,20 +773,22 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
device->info.platform == INTEL_PLATFORM_CHV;
|
||||
|
||||
if (!device->use_relocations &&
|
||||
!anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN)) {
|
||||
(!intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN, &val) || !val)) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing softpin");
|
||||
goto fail_alloc;
|
||||
}
|
||||
|
||||
if (!anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY)) {
|
||||
if (!intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_FENCE_ARRAY, &val) || !val) {
|
||||
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
|
||||
"kernel missing syncobj support");
|
||||
goto fail_base;
|
||||
}
|
||||
|
||||
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
|
||||
device->has_exec_capture = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC, &val))
|
||||
device->has_exec_async = val;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_CAPTURE, &val))
|
||||
device->has_exec_capture = val;
|
||||
|
||||
/* Start with medium; sorted low to high */
|
||||
const int priorities[] = {
|
||||
|
|
@ -817,11 +819,11 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
assert(device->supports_48bit_addresses == !device->use_relocations);
|
||||
device->use_softpin = !device->use_relocations;
|
||||
|
||||
device->has_context_isolation =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_CONTEXT_ISOLATION, &val))
|
||||
device->has_context_isolation = val;
|
||||
|
||||
device->has_exec_timeline =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_TIMELINE_FENCES);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_EXEC_TIMELINE_FENCES, &val))
|
||||
device->has_exec_timeline = val;
|
||||
if (debug_get_bool_option("ANV_QUEUE_THREAD_DISABLE", false))
|
||||
device->has_exec_timeline = false;
|
||||
|
||||
|
|
@ -880,11 +882,11 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
device->always_flush_cache = INTEL_DEBUG(DEBUG_STALL) ||
|
||||
driQueryOptionb(&instance->dri_options, "always_flush_cache");
|
||||
|
||||
device->has_mmap_offset =
|
||||
anv_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION) >= 4;
|
||||
if (intel_gem_get_param(fd, I915_PARAM_MMAP_GTT_VERSION, &val))
|
||||
device->has_mmap_offset = val >= 4;
|
||||
|
||||
device->has_userptr_probe =
|
||||
anv_gem_get_param(fd, I915_PARAM_HAS_USERPTR_PROBE);
|
||||
if (intel_gem_get_param(fd, I915_PARAM_HAS_USERPTR_PROBE, &val))
|
||||
device->has_userptr_probe = val;
|
||||
|
||||
device->compiler = brw_compiler_create(NULL, &device->info);
|
||||
if (device->compiler == NULL) {
|
||||
|
|
@ -909,10 +911,11 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
|
|||
if (instance->vk.enabled_extensions.KHR_display) {
|
||||
master_fd = open(primary_path, O_RDWR | O_CLOEXEC);
|
||||
if (master_fd >= 0) {
|
||||
int val;
|
||||
/* prod the device with a GETPARAM call which will fail if
|
||||
* we don't have permission to even render on this device
|
||||
*/
|
||||
if (anv_gem_get_param(master_fd, I915_PARAM_CHIPSET_ID) == 0) {
|
||||
if (!intel_gem_get_param(master_fd, I915_PARAM_CHIPSET_ID, &val) || !val) {
|
||||
close(master_fd);
|
||||
master_fd = -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -249,23 +249,6 @@ anv_gem_set_tiling(struct anv_device *device,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_get_param(int fd, uint32_t param)
|
||||
{
|
||||
int tmp;
|
||||
|
||||
drm_i915_getparam_t gp = {
|
||||
.param = param,
|
||||
.value = &tmp,
|
||||
};
|
||||
|
||||
int ret = intel_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||
if (ret == 0)
|
||||
return tmp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
anv_gem_has_context_priority(int fd, int priority)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -110,12 +110,6 @@ anv_gem_set_caching(struct anv_device *device, uint32_t gem_handle,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_get_param(int fd, uint32_t param)
|
||||
{
|
||||
unreachable("Unused");
|
||||
}
|
||||
|
||||
int
|
||||
anv_gem_set_context_param(int fd, uint32_t context, uint32_t param, uint64_t value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1384,7 +1384,6 @@ int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
|
|||
bool anv_gem_has_context_priority(int fd, int priority);
|
||||
int anv_gem_set_context_param(int fd, uint32_t context, uint32_t param,
|
||||
uint64_t value);
|
||||
int anv_gem_get_param(int fd, uint32_t param);
|
||||
int anv_gem_get_tiling(struct anv_device *device, uint32_t gem_handle);
|
||||
int anv_gem_context_get_reset_stats(int fd, int context,
|
||||
uint32_t *active, uint32_t *pending);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue