ilo: set I915_EXEC_NO_RELOC when available
The winsys makes it clear that the pipe drivers should write presumed offsets. We can always set I915_EXEC_NO_RELOC when the kernel supports it.
This commit is contained in:
parent
0b462d3ab1
commit
d80f0c34b7
|
@ -48,6 +48,7 @@ struct intel_winsys {
|
||||||
int fd;
|
int fd;
|
||||||
drm_intel_bufmgr *bufmgr;
|
drm_intel_bufmgr *bufmgr;
|
||||||
struct intel_winsys_info info;
|
struct intel_winsys_info info;
|
||||||
|
unsigned long exec_flags;
|
||||||
|
|
||||||
struct drm_intel_decode *decode;
|
struct drm_intel_decode *decode;
|
||||||
};
|
};
|
||||||
|
@ -108,7 +109,7 @@ test_reg_read(struct intel_winsys *winsys, uint32_t reg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
init_info(struct intel_winsys *winsys)
|
probe_winsys(struct intel_winsys *winsys)
|
||||||
{
|
{
|
||||||
struct intel_winsys_info *info = &winsys->info;
|
struct intel_winsys_info *info = &winsys->info;
|
||||||
int val;
|
int val;
|
||||||
|
@ -147,6 +148,14 @@ init_info(struct intel_winsys *winsys)
|
||||||
get_param(winsys, I915_PARAM_HAS_GEN7_SOL_RESET, &val);
|
get_param(winsys, I915_PARAM_HAS_GEN7_SOL_RESET, &val);
|
||||||
info->has_gen7_sol_reset = val;
|
info->has_gen7_sol_reset = val;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pipe drivers are expected to write the presumed offsets after adding
|
||||||
|
* reloc entries
|
||||||
|
*/
|
||||||
|
get_param(winsys, I915_PARAM_HAS_EXEC_NO_RELOC, &val);
|
||||||
|
if (val)
|
||||||
|
winsys->exec_flags |= I915_EXEC_NO_RELOC;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +177,7 @@ intel_winsys_create_for_fd(int fd)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!init_info(winsys)) {
|
if (!probe_winsys(winsys)) {
|
||||||
drm_intel_bufmgr_destroy(winsys->bufmgr);
|
drm_intel_bufmgr_destroy(winsys->bufmgr);
|
||||||
FREE(winsys);
|
FREE(winsys);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -384,7 +393,8 @@ intel_winsys_submit_bo(struct intel_winsys *winsys,
|
||||||
struct intel_context *ctx,
|
struct intel_context *ctx,
|
||||||
unsigned long flags)
|
unsigned long flags)
|
||||||
{
|
{
|
||||||
const unsigned long exec_flags = (unsigned long) ring | flags;
|
const unsigned long exec_flags =
|
||||||
|
winsys->exec_flags | (unsigned long) ring | flags;
|
||||||
|
|
||||||
/* logical contexts are only available for the render ring */
|
/* logical contexts are only available for the render ring */
|
||||||
if (ring != INTEL_RING_RENDER)
|
if (ring != INTEL_RING_RENDER)
|
||||||
|
|
|
@ -264,6 +264,8 @@ intel_bo_pread(struct intel_bo *bo, unsigned long offset,
|
||||||
* When \p bo is submitted for execution, and if \p target_bo has moved,
|
* When \p bo is submitted for execution, and if \p target_bo has moved,
|
||||||
* the kernel will patch \p bo at \p offset to \p target_bo->offset plus
|
* the kernel will patch \p bo at \p offset to \p target_bo->offset plus
|
||||||
* \p target_offset.
|
* \p target_offset.
|
||||||
|
*
|
||||||
|
* \p presumed_offset should be written to \p bo at \p offset.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
intel_bo_add_reloc(struct intel_bo *bo, uint32_t offset,
|
intel_bo_add_reloc(struct intel_bo *bo, uint32_t offset,
|
||||||
|
|
Loading…
Reference in New Issue