1 /* SPDX-License-Identifier: GPL-2.0-only OR MIT */
2 /* Copyright (c) 2023 Imagination Technologies Ltd. */
7 #include <linux/bits.h>
8 #include <linux/limits.h>
9 #include <linux/types.h>
15 enum pvr_stream_type {
16 PVR_STREAM_TYPE_GEOM = 0,
18 PVR_STREAM_TYPE_COMPUTE,
19 PVR_STREAM_TYPE_TRANSFER,
20 PVR_STREAM_TYPE_STATIC_RENDER_CONTEXT,
21 PVR_STREAM_TYPE_STATIC_COMPUTE_CONTEXT,
26 enum pvr_stream_size {
27 PVR_STREAM_SIZE_8 = 0,
31 PVR_STREAM_SIZE_ARRAY,
34 #define PVR_FEATURE_NOT BIT(31)
35 #define PVR_FEATURE_NONE U32_MAX
37 struct pvr_stream_def {
39 enum pvr_stream_size size;
44 struct pvr_stream_ext_def {
45 const struct pvr_stream_def *stream;
51 struct pvr_stream_ext_header {
52 const struct pvr_stream_ext_def *ext_streams;
57 struct pvr_stream_cmd_defs {
58 enum pvr_stream_type type;
60 const struct pvr_stream_def *main_stream;
64 const struct pvr_stream_ext_header *ext_headers;
70 pvr_stream_process(struct pvr_device *pvr_dev, const struct pvr_stream_cmd_defs *cmd_defs,
71 void *stream, u32 stream_size, void *dest_out);
73 pvr_stream_create_musthave_masks(struct pvr_device *pvr_dev);
75 #endif /* PVR_STREAM_H */