mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +00:00
i-g-t: check kernel enable rings or not
1. add functions check kernel enable a ring or not. 2. add function gem_get_num_rings() to check how many rings kernel has enable. 3. gem_ring_sync_loop.c will call gem_get_num_rings() directly instead of original static fucntion get_number_rings(). Signed-off-by: Zhong Li <zhong.li@intel.com> [Ben: Wrapped commit message + whitespace fixes] Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
This commit is contained in:
parent
53d251ac23
commit
8ddf84d129
@ -270,19 +270,64 @@ void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride)
|
|||||||
assert(st.tiling_mode == tiling);
|
assert(st.tiling_mode == tiling);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LOCAL_I915_PARAM_HAS_VEBOX 22
|
bool gem_has_enable_ring(int fd,int param)
|
||||||
int gem_has_vebox(int fd)
|
|
||||||
{
|
{
|
||||||
struct drm_i915_getparam gp;
|
drm_i915_getparam_t gp;
|
||||||
int val;
|
int ret, tmp;
|
||||||
|
memset(&gp, 0, sizeof(gp));
|
||||||
|
|
||||||
gp.param = LOCAL_I915_PARAM_HAS_VEBOX;
|
gp.value = &tmp;
|
||||||
gp.value = &val;
|
gp.param = param;
|
||||||
|
|
||||||
if (ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)))
|
ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||||
return 0;
|
|
||||||
|
|
||||||
return val != 0;
|
if ((ret == 0) && (*gp.value > 0))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool gem_has_bsd(int fd)
|
||||||
|
{
|
||||||
|
|
||||||
|
return gem_has_enable_ring(fd,I915_PARAM_HAS_BSD);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool gem_has_blt(int fd)
|
||||||
|
{
|
||||||
|
|
||||||
|
return gem_has_enable_ring(fd,I915_PARAM_HAS_BLT);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LOCAL_I915_PARAM_HAS_VEBOX 22
|
||||||
|
bool gem_has_vebox(int fd)
|
||||||
|
{
|
||||||
|
|
||||||
|
return gem_has_enable_ring(fd,LOCAL_I915_PARAM_HAS_VEBOX);
|
||||||
|
}
|
||||||
|
|
||||||
|
int gem_get_num_rings(int fd)
|
||||||
|
{
|
||||||
|
int num_rings = 1; /* render ring is always available */
|
||||||
|
|
||||||
|
if (gem_has_bsd(fd))
|
||||||
|
num_rings++;
|
||||||
|
else
|
||||||
|
goto skip;
|
||||||
|
|
||||||
|
if (gem_has_blt(fd))
|
||||||
|
num_rings++;
|
||||||
|
else
|
||||||
|
goto skip;
|
||||||
|
|
||||||
|
if (gem_has_vebox(fd))
|
||||||
|
num_rings++;
|
||||||
|
else
|
||||||
|
goto skip;
|
||||||
|
|
||||||
|
|
||||||
|
skip:
|
||||||
|
return num_rings;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct local_drm_i915_gem_cacheing {
|
struct local_drm_i915_gem_cacheing {
|
||||||
|
@ -47,8 +47,12 @@ int drm_open_any_master(void);
|
|||||||
void gem_quiescent_gpu(int fd);
|
void gem_quiescent_gpu(int fd);
|
||||||
|
|
||||||
/* ioctl wrappers and similar stuff for bare metal testing */
|
/* ioctl wrappers and similar stuff for bare metal testing */
|
||||||
int gem_has_vebox(int fd);
|
|
||||||
void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
|
void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
|
||||||
|
bool gem_has_enable_ring(int fd,int param);
|
||||||
|
bool gem_has_bsd(int fd);
|
||||||
|
bool gem_has_blt(int fd);
|
||||||
|
bool gem_has_vebox(int fd);
|
||||||
|
int gem_get_num_rings(int fd);
|
||||||
int gem_has_cacheing(int fd);
|
int gem_has_cacheing(int fd);
|
||||||
void gem_set_cacheing(int fd, uint32_t handle, int cacheing);
|
void gem_set_cacheing(int fd, uint32_t handle, int cacheing);
|
||||||
int gem_get_cacheing(int fd, uint32_t handle);
|
int gem_get_cacheing(int fd, uint32_t handle);
|
||||||
|
@ -55,47 +55,11 @@ static drm_intel_bo *target_buffer;
|
|||||||
#define MI_COND_BATCH_BUFFER_END (0x36<<23 | 1)
|
#define MI_COND_BATCH_BUFFER_END (0x36<<23 | 1)
|
||||||
#define MI_DO_COMPARE (1<<21)
|
#define MI_DO_COMPARE (1<<21)
|
||||||
|
|
||||||
static int
|
|
||||||
get_num_rings(int fd)
|
|
||||||
{
|
|
||||||
int num_rings = 1; /* render ring is always available */
|
|
||||||
drm_i915_getparam_t gp;
|
|
||||||
int ret, tmp;
|
|
||||||
|
|
||||||
memset(&gp, 0, sizeof(gp));
|
|
||||||
gp.value = &tmp;
|
|
||||||
|
|
||||||
gp.param = I915_PARAM_HAS_BSD;
|
|
||||||
ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
|
||||||
|
|
||||||
if ((ret == 0) && (*gp.value > 0))
|
|
||||||
num_rings++;
|
|
||||||
else
|
|
||||||
goto skip;
|
|
||||||
|
|
||||||
gp.param = I915_PARAM_HAS_BLT;
|
|
||||||
ret = drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
|
||||||
|
|
||||||
if ((ret == 0) && (*gp.value > 0))
|
|
||||||
num_rings++;
|
|
||||||
else
|
|
||||||
goto skip;
|
|
||||||
|
|
||||||
if (gem_has_vebox(fd))
|
|
||||||
num_rings++;
|
|
||||||
else
|
|
||||||
goto skip;
|
|
||||||
|
|
||||||
|
|
||||||
skip:
|
|
||||||
return num_rings;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
store_dword_loop(int fd)
|
store_dword_loop(int fd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int num_rings = get_num_rings(fd);
|
int num_rings = gem_get_num_rings(fd);
|
||||||
|
|
||||||
srandom(0xdeadbeef);
|
srandom(0xdeadbeef);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user