mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
freedreno: Replace OUT_RELOCD with permanently flagging shader BOs for it.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4967>
This commit is contained in:
parent
9d8d936dfc
commit
554b959df0
9 changed files with 14 additions and 12 deletions
|
|
@ -168,7 +168,7 @@ cs_program_emit(struct fd_ringbuffer *ring, struct kernel *kernel)
|
|||
CP_LOAD_STATE6_0_STATE_SRC(SS6_INDIRECT) |
|
||||
CP_LOAD_STATE6_0_STATE_BLOCK(SB6_CS_SHADER) |
|
||||
CP_LOAD_STATE6_0_NUM_UNIT(v->instrlen));
|
||||
OUT_RELOCD(ring, v->bo, 0, 0, 0);
|
||||
OUT_RELOC(ring, v->bo, 0, 0, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -226,6 +226,12 @@ out_unlock:
|
|||
return bo;
|
||||
}
|
||||
|
||||
void
|
||||
fd_bo_mark_for_dump(struct fd_bo *bo)
|
||||
{
|
||||
bo->flags |= FD_RELOC_DUMP;
|
||||
}
|
||||
|
||||
uint64_t fd_bo_get_iova(struct fd_bo *bo)
|
||||
{
|
||||
return bo->iova;
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ struct fd_bo *fd_bo_from_handle(struct fd_device *dev,
|
|||
uint32_t handle, uint32_t size);
|
||||
struct fd_bo * fd_bo_from_name(struct fd_device *dev, uint32_t name);
|
||||
struct fd_bo * fd_bo_from_dmabuf(struct fd_device *dev, int fd);
|
||||
void fd_bo_mark_for_dump(struct fd_bo *bo);
|
||||
uint64_t fd_bo_get_iova(struct fd_bo *bo);
|
||||
struct fd_bo * fd_bo_ref(struct fd_bo *bo);
|
||||
void fd_bo_del(struct fd_bo *bo);
|
||||
|
|
|
|||
|
|
@ -264,13 +264,6 @@ OUT_RELOCW(struct fd_ringbuffer *ring, struct fd_bo *bo,
|
|||
__out_reloc(ring, bo, offset, or, shift, FD_RELOC_WRITE);
|
||||
}
|
||||
|
||||
static inline void
|
||||
OUT_RELOCD(struct fd_ringbuffer *ring, struct fd_bo *bo,
|
||||
uint32_t offset, uint64_t or, int32_t shift)
|
||||
{
|
||||
__out_reloc(ring, bo, offset, or, shift, FD_RELOC_DUMP);
|
||||
}
|
||||
|
||||
static inline void
|
||||
OUT_RB(struct fd_ringbuffer *ring, struct fd_ringbuffer *target)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@ assemble_variant(struct ir3_shader_variant *v)
|
|||
DRM_FREEDRENO_GEM_CACHE_WCOMBINE |
|
||||
DRM_FREEDRENO_GEM_TYPE_KMEM,
|
||||
"%s:%s", ir3_shader_stage(v), info->name);
|
||||
/* Always include shaders in kernel crash dumps. */
|
||||
fd_bo_mark_for_dump(v->bo);
|
||||
|
||||
memcpy(fd_bo_map(v->bo), bin, sz);
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ emit_shader(struct fd_ringbuffer *ring, const struct ir3_shader_variant *so)
|
|||
OUT_RING(ring, CP_LOAD_STATE_1_EXT_SRC_ADDR(0) |
|
||||
CP_LOAD_STATE_1_STATE_TYPE(ST_SHADER));
|
||||
} else {
|
||||
OUT_RELOCD(ring, so->bo, 0,
|
||||
OUT_RELOC(ring, so->bo, 0,
|
||||
CP_LOAD_STATE_1_STATE_TYPE(ST_SHADER), 0);
|
||||
}
|
||||
for (i = 0; i < sz; i++) {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ emit_shader(struct fd_ringbuffer *ring, const struct ir3_shader_variant *so)
|
|||
OUT_RING(ring, CP_LOAD_STATE4_1_EXT_SRC_ADDR(0) |
|
||||
CP_LOAD_STATE4_1_STATE_TYPE(ST4_SHADER));
|
||||
} else {
|
||||
OUT_RELOCD(ring, so->bo, 0,
|
||||
OUT_RELOC(ring, so->bo, 0,
|
||||
CP_LOAD_STATE4_1_STATE_TYPE(ST4_SHADER), 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ fd5_emit_shader(struct fd_ringbuffer *ring, const struct ir3_shader_variant *so)
|
|||
CP_LOAD_STATE4_1_STATE_TYPE(ST4_SHADER));
|
||||
OUT_RING(ring, CP_LOAD_STATE4_2_EXT_SRC_ADDR_HI(0));
|
||||
} else {
|
||||
OUT_RELOCD(ring, so->bo, 0,
|
||||
OUT_RELOC(ring, so->bo, 0,
|
||||
CP_LOAD_STATE4_1_STATE_TYPE(ST4_SHADER), 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ fd6_emit_shader(struct fd_ringbuffer *ring, const struct ir3_shader_variant *so)
|
|||
CP_LOAD_STATE6_0_STATE_SRC(SS6_INDIRECT) |
|
||||
CP_LOAD_STATE6_0_STATE_BLOCK(sb) |
|
||||
CP_LOAD_STATE6_0_NUM_UNIT(so->instrlen));
|
||||
OUT_RELOCD(ring, so->bo, 0, 0, 0);
|
||||
OUT_RELOC(ring, so->bo, 0, 0, 0);
|
||||
}
|
||||
|
||||
/* Add any missing varyings needed for stream-out. Otherwise varyings not
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue