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:
committed by
Marge Bot
parent
c076aeb865
commit
dfd20f002f
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user