mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-03 19:48:17 +02:00
ac/cmdbuf: Add ac_emit_video_write_timestamp
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Benjamin Cheng <benjamin.cheng@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41744>
This commit is contained in:
parent
adad1a7318
commit
581bf2e3b0
5 changed files with 22 additions and 0 deletions
|
|
@ -55,3 +55,14 @@ ac_emit_video_write_memory(struct ac_cmdbuf *cs, const struct radeon_info *info,
|
|||
write_memory->data = value;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ac_emit_video_write_timestamp(struct ac_cmdbuf *cs, enum amd_ip_type ip_type, uint64_t va)
|
||||
{
|
||||
if (ip_type == AMD_IP_VCN_ENC) {
|
||||
struct rvcn_cmn_engine_op_timestamp *timestamp =
|
||||
vcn_common_cmd(cs, RADEON_VCN_IB_COMMON_OP_TIMESTAMP, sizeof(struct rvcn_cmn_engine_op_timestamp));
|
||||
timestamp->timestamp_addr_lo = va & 0xffffffff;
|
||||
timestamp->timestamp_addr_hi = va >> 32;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@ void
|
|||
ac_emit_video_write_memory(struct ac_cmdbuf *cs, const struct radeon_info *info,
|
||||
enum amd_ip_type ip_type, uint64_t va, uint64_t value);
|
||||
|
||||
void
|
||||
ac_emit_video_write_timestamp(struct ac_cmdbuf *cs, enum amd_ip_type ip_type, uint64_t va);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#define RADEON_VCN_SIGNATURE_SIZE (0x00000010)
|
||||
|
||||
#define RADEON_VCN_IB_COMMON_OP_WRITEMEMORY (0x33000001)
|
||||
#define RADEON_VCN_IB_COMMON_OP_TIMESTAMP (0x31000001)
|
||||
#define RADEON_VCN_IB_COMMON_OP_RESOLVEINPUTPARAMLAYOUT (0x31000007)
|
||||
|
||||
#define RADEON_VCN_RESOLVE_INPUT_PARAM_LAYOUT_TYPE_QPMAP_INT8 1
|
||||
|
|
@ -52,6 +53,11 @@ struct rvcn_cmn_engine_ib_package {
|
|||
unsigned int package_type;
|
||||
};
|
||||
|
||||
struct rvcn_cmn_engine_op_timestamp {
|
||||
unsigned int timestamp_addr_lo; /* Low address of Timestamp */
|
||||
unsigned int timestamp_addr_hi; /* High address of Timestamp */
|
||||
};
|
||||
|
||||
struct rvcn_cmn_engine_op_writememory {
|
||||
unsigned int dest_addr_lo; // Low address of memory
|
||||
unsigned int dest_addr_hi; // High address of memory
|
||||
|
|
|
|||
|
|
@ -615,6 +615,7 @@ ac_fill_video_info(struct radeon_info *info, struct ac_drm_device *dev)
|
|||
cap->dec = info->vcn_ip_version >= VCN_4_0_0 ? 1 : 0;
|
||||
cap->enc = vcn_dec_only(info) ? 0 : 1;
|
||||
cap->write_memory = write_memory_supported(info);
|
||||
cap->timestamp = info->vcn_ip_version >= VCN_2_0_0;
|
||||
if (cap->dec)
|
||||
vcn_dec_caps(info);
|
||||
if (cap->enc)
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@ struct ac_video_queue_caps {
|
|||
uint32_t supported;
|
||||
};
|
||||
enum ac_video_write_memory_support write_memory;
|
||||
bool timestamp;
|
||||
};
|
||||
|
||||
struct ac_video_caps {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue