1584f16ca9
The TFU can copy from raster, UIF, and SAND input images to UIF output images, with optional mipmap generation. This will certainly be useful for media EGL image input, but is also useful immediately for mipmap generation without bogging the V3D core down. For now we only run the queue 1 job deep, and don't have any hang recovery (though I don't think we should need it, with TFU). Queuing multiple jobs in the HW will require synchronizing the YUV coefficient regs updates since they don't get FIFOed with the job. v2: Change the ioctl to IOW instead of IOWR, always set COEF0, explain why TFU is AUTH, clarify the syncing docs, drop the unused TFU interrupt regs (you're expected to use the hub's), don't take &bo->base for NULL bos. v3: Fix a little whitespace alignment (noticed by checkpatch), rebase on drm_sched_job_cleanup() changes. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Dave Emett <david.emett@broadcom.com> (v2) Link: https://patchwork.freedesktop.org/patch/264607/
103 lines
2.2 KiB
C
103 lines
2.2 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/* Copyright (C) 2015-2018 Broadcom */
|
|
|
|
#if !defined(_V3D_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _V3D_TRACE_H_
|
|
|
|
#include <linux/stringify.h>
|
|
#include <linux/types.h>
|
|
#include <linux/tracepoint.h>
|
|
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM v3d
|
|
#define TRACE_INCLUDE_FILE v3d_trace
|
|
|
|
TRACE_EVENT(v3d_submit_cl,
|
|
TP_PROTO(struct drm_device *dev, bool is_render,
|
|
uint64_t seqno,
|
|
u32 ctnqba, u32 ctnqea),
|
|
TP_ARGS(dev, is_render, seqno, ctnqba, ctnqea),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u32, dev)
|
|
__field(bool, is_render)
|
|
__field(u64, seqno)
|
|
__field(u32, ctnqba)
|
|
__field(u32, ctnqea)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->dev = dev->primary->index;
|
|
__entry->is_render = is_render;
|
|
__entry->seqno = seqno;
|
|
__entry->ctnqba = ctnqba;
|
|
__entry->ctnqea = ctnqea;
|
|
),
|
|
|
|
TP_printk("dev=%u, %s, seqno=%llu, 0x%08x..0x%08x",
|
|
__entry->dev,
|
|
__entry->is_render ? "RCL" : "BCL",
|
|
__entry->seqno,
|
|
__entry->ctnqba,
|
|
__entry->ctnqea)
|
|
);
|
|
|
|
TRACE_EVENT(v3d_submit_tfu,
|
|
TP_PROTO(struct drm_device *dev,
|
|
uint64_t seqno),
|
|
TP_ARGS(dev, seqno),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u32, dev)
|
|
__field(u64, seqno)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->dev = dev->primary->index;
|
|
__entry->seqno = seqno;
|
|
),
|
|
|
|
TP_printk("dev=%u, seqno=%llu",
|
|
__entry->dev,
|
|
__entry->seqno)
|
|
);
|
|
|
|
TRACE_EVENT(v3d_reset_begin,
|
|
TP_PROTO(struct drm_device *dev),
|
|
TP_ARGS(dev),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u32, dev)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->dev = dev->primary->index;
|
|
),
|
|
|
|
TP_printk("dev=%u",
|
|
__entry->dev)
|
|
);
|
|
|
|
TRACE_EVENT(v3d_reset_end,
|
|
TP_PROTO(struct drm_device *dev),
|
|
TP_ARGS(dev),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u32, dev)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->dev = dev->primary->index;
|
|
),
|
|
|
|
TP_printk("dev=%u",
|
|
__entry->dev)
|
|
);
|
|
|
|
#endif /* _V3D_TRACE_H_ */
|
|
|
|
/* This part must be outside protection */
|
|
#undef TRACE_INCLUDE_PATH
|
|
#define TRACE_INCLUDE_PATH .
|
|
#include <trace/define_trace.h>
|