blob: 87e62c86e841bbb819e20fff70a8b43c7bf19721 [file] [log] [blame]
Katarzyna Dec081f7712018-04-11 10:14:58 +02001/*
2 * Copyright © 2018 Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
22 *
23 */
24
25#ifndef GPU_FILL_H
26#define GPU_FILL_H
27
28#include <intel_bufmgr.h>
29#include <i915_drm.h>
30
31#include "media_fill.h"
32#include "gen7_media.h"
33#include "gen8_media.h"
34#include "intel_reg.h"
35#include "drmtest.h"
36#include "intel_batchbuffer.h"
37#include "intel_chipset.h"
38#include <assert.h>
39
40uint32_t
41batch_used(struct intel_batchbuffer *batch);
42
43uint32_t
44batch_align(struct intel_batchbuffer *batch, uint32_t align);
45
46void *
47batch_alloc(struct intel_batchbuffer *batch, uint32_t size, uint32_t align);
48
49uint32_t
50batch_offset(struct intel_batchbuffer *batch, void *ptr);
51
52uint32_t
53batch_copy(struct intel_batchbuffer *batch, const void *ptr, uint32_t size, uint32_t align);
54
55void
56gen7_render_flush(struct intel_batchbuffer *batch, uint32_t batch_end);
57
58uint32_t
59gen7_fill_curbe_buffer_data(struct intel_batchbuffer *batch,
60 uint8_t color);
61
62uint32_t
63gen7_fill_surface_state(struct intel_batchbuffer *batch,
64 struct igt_buf *buf,
65 uint32_t format,
66 int is_dst);
67
68uint32_t
69gen7_fill_binding_table(struct intel_batchbuffer *batch,
70 struct igt_buf *dst);
71
72uint32_t
73gen7_fill_media_kernel(struct intel_batchbuffer *batch,
74 const uint32_t kernel[][4],
75 size_t size);
76
77uint32_t
78gen8_fill_media_kernel(struct intel_batchbuffer *batch,
79 const uint32_t kernel[][4],
80 size_t size);
81
82uint32_t
83gen7_fill_interface_descriptor(struct intel_batchbuffer *batch, struct igt_buf *dst,
84 const uint32_t kernel[][4], size_t size);
85
86void
87gen7_emit_state_base_address(struct intel_batchbuffer *batch);
88
89void
90gen7_emit_vfe_state(struct intel_batchbuffer *batch);
91
92void
93gen7_emit_vfe_state_gpgpu(struct intel_batchbuffer *batch);
94
95void
96gen7_emit_curbe_load(struct intel_batchbuffer *batch, uint32_t curbe_buffer);
97
98void
99gen7_emit_interface_descriptor_load(struct intel_batchbuffer *batch, uint32_t interface_descriptor);
100
101void
102gen7_emit_media_objects(struct intel_batchbuffer *batch,
103 unsigned x, unsigned y,
104 unsigned width, unsigned height);
105
106void
107gen7_emit_gpgpu_walk(struct intel_batchbuffer *batch,
108 unsigned x, unsigned y,
109 unsigned width, unsigned height);
110
111void
112gen8_render_flush(struct intel_batchbuffer *batch, uint32_t batch_end);
113
114uint32_t
115gen8_fill_curbe_buffer_data(struct intel_batchbuffer *batch,
116 uint8_t color);
117
118uint32_t
119gen8_fill_surface_state(struct intel_batchbuffer *batch,
120 struct igt_buf *buf,
121 uint32_t format,
122 int is_dst);
123
124uint32_t
125gen8_fill_binding_table(struct intel_batchbuffer *batch,
126 struct igt_buf *dst);
127
128uint32_t
129gen8_fill_interface_descriptor(struct intel_batchbuffer *batch, struct igt_buf *dst, const uint32_t kernel[][4], size_t size);
130
131void
132gen8_emit_state_base_address(struct intel_batchbuffer *batch);
133
134void
135gen8_emit_vfe_state(struct intel_batchbuffer *batch);
136
137void
138gen8_emit_vfe_state_gpgpu(struct intel_batchbuffer *batch);
139
140void
141gen8_emit_curbe_load(struct intel_batchbuffer *batch, uint32_t curbe_buffer);
142
143void
144gen8_emit_interface_descriptor_load(struct intel_batchbuffer *batch, uint32_t interface_descriptor);
145
146void
147gen8_emit_media_state_flush(struct intel_batchbuffer *batch);
148
149void
150gen8_emit_media_objects(struct intel_batchbuffer *batch,
151 unsigned x, unsigned y,
152 unsigned width, unsigned height);
153
154void
155gen8lp_emit_media_objects(struct intel_batchbuffer *batch,
156 unsigned x, unsigned y,
157 unsigned width, unsigned height);
158
159void
160gen8_emit_gpgpu_walk(struct intel_batchbuffer *batch,
161 unsigned x, unsigned y,
162 unsigned width, unsigned height);
163
164void
165gen9_emit_state_base_address(struct intel_batchbuffer *batch);
166
167#endif /* GPU_FILL_H */