blob: 072e9f7c21de2a18111724d3b385c1c235916629 [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
Katarzyna Dec80996142018-04-11 10:14:59 +020073gen7_fill_kernel(struct intel_batchbuffer *batch,
Katarzyna Dec081f7712018-04-11 10:14:58 +020074 const uint32_t kernel[][4],
75 size_t size);
76
77uint32_t
78gen7_fill_interface_descriptor(struct intel_batchbuffer *batch, struct igt_buf *dst,
79 const uint32_t kernel[][4], size_t size);
80
81void
82gen7_emit_state_base_address(struct intel_batchbuffer *batch);
83
84void
85gen7_emit_vfe_state(struct intel_batchbuffer *batch);
86
87void
88gen7_emit_vfe_state_gpgpu(struct intel_batchbuffer *batch);
89
90void
91gen7_emit_curbe_load(struct intel_batchbuffer *batch, uint32_t curbe_buffer);
92
93void
94gen7_emit_interface_descriptor_load(struct intel_batchbuffer *batch, uint32_t interface_descriptor);
95
96void
97gen7_emit_media_objects(struct intel_batchbuffer *batch,
98 unsigned x, unsigned y,
99 unsigned width, unsigned height);
100
101void
102gen7_emit_gpgpu_walk(struct intel_batchbuffer *batch,
103 unsigned x, unsigned y,
104 unsigned width, unsigned height);
105
Katarzyna Dec081f7712018-04-11 10:14:58 +0200106uint32_t
107gen8_fill_surface_state(struct intel_batchbuffer *batch,
108 struct igt_buf *buf,
109 uint32_t format,
110 int is_dst);
111
112uint32_t
Katarzyna Dec081f7712018-04-11 10:14:58 +0200113gen8_fill_interface_descriptor(struct intel_batchbuffer *batch, struct igt_buf *dst, const uint32_t kernel[][4], size_t size);
114
115void
116gen8_emit_state_base_address(struct intel_batchbuffer *batch);
117
118void
Katarzyna Dec80996142018-04-11 10:14:59 +0200119gen8_emit_media_state_flush(struct intel_batchbuffer *batch);
120
121void
Katarzyna Dec081f7712018-04-11 10:14:58 +0200122gen8_emit_vfe_state(struct intel_batchbuffer *batch);
123
124void
125gen8_emit_vfe_state_gpgpu(struct intel_batchbuffer *batch);
126
127void
Katarzyna Dec081f7712018-04-11 10:14:58 +0200128gen8_emit_gpgpu_walk(struct intel_batchbuffer *batch,
129 unsigned x, unsigned y,
130 unsigned width, unsigned height);
131
132void
133gen9_emit_state_base_address(struct intel_batchbuffer *batch);
134
135#endif /* GPU_FILL_H */