Commit 45233ab2 authored by Chris Wilson's avatar Chris Wilson

drm/i915/gt: Move gen8 CS emitters into gen8_engine_cs.h

Reduce the pollution of intel_engine.h by moving gen8_emit_pipe_control
and friends to gen8_engine_cs.h
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201216135452.6063-1-chris@chris-wilson.co.uk
parent f8246cf4
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <drm/drm_fourcc.h> #include <drm/drm_fourcc.h>
#include "gem/i915_gem_pm.h" #include "gem/i915_gem_pm.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
#include "i915_drv.h" #include "i915_drv.h"
......
...@@ -73,6 +73,7 @@ ...@@ -73,6 +73,7 @@
#include "gt/intel_engine_heartbeat.h" #include "gt/intel_engine_heartbeat.h"
#include "gt/intel_engine_user.h" #include "gt/intel_engine_user.h"
#include "gt/intel_execlists_submission.h" /* virtual_engine */ #include "gt/intel_execlists_submission.h" /* virtual_engine */
#include "gt/intel_gpu_commands.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
#include "i915_gem_context.h" #include "i915_gem_context.h"
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "gem/i915_gem_ioctls.h" #include "gem/i915_gem_ioctls.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_gt_buffer_pool.h" #include "gt/intel_gt_buffer_pool.h"
#include "gt/intel_gt_pm.h" #include "gt/intel_gt_pm.h"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_gt_buffer_pool.h" #include "gt/intel_gt_buffer_pool.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/prime_numbers.h> #include <linux/prime_numbers.h>
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_gt_pm.h" #include "gt/intel_gt_pm.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/prime_numbers.h> #include <linux/prime_numbers.h>
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_gt_pm.h" #include "gt/intel_gt_pm.h"
#include "gem/i915_gem_region.h" #include "gem/i915_gem_region.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "gem/i915_gem_context.h" #include "gem/i915_gem_context.h"
#include "gem/i915_gem_pm.h" #include "gem/i915_gem_pm.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "i915_vma.h" #include "i915_vma.h"
#include "i915_drv.h" #include "i915_drv.h"
......
...@@ -6,8 +6,13 @@ ...@@ -6,8 +6,13 @@
#ifndef __GEN8_ENGINE_CS_H__ #ifndef __GEN8_ENGINE_CS_H__
#define __GEN8_ENGINE_CS_H__ #define __GEN8_ENGINE_CS_H__
#include <linux/string.h>
#include <linux/types.h> #include <linux/types.h>
#include "i915_gem.h" /* GEM_BUG_ON */
#include "intel_gpu_commands.h"
struct i915_request; struct i915_request;
int gen8_emit_flush_rcs(struct i915_request *rq, u32 mode); int gen8_emit_flush_rcs(struct i915_request *rq, u32 mode);
...@@ -33,4 +38,90 @@ u32 *gen8_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs); ...@@ -33,4 +38,90 @@ u32 *gen8_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
u32 *gen11_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs); u32 *gen11_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
u32 *gen12_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs); u32 *gen12_emit_fini_breadcrumb_rcs(struct i915_request *rq, u32 *cs);
static inline u32 *
__gen8_emit_pipe_control(u32 *batch, u32 flags0, u32 flags1, u32 offset)
{
memset(batch, 0, 6 * sizeof(u32));
batch[0] = GFX_OP_PIPE_CONTROL(6) | flags0;
batch[1] = flags1;
batch[2] = offset;
return batch + 6;
}
static inline u32 *gen8_emit_pipe_control(u32 *batch, u32 flags, u32 offset)
{
return __gen8_emit_pipe_control(batch, 0, flags, offset);
}
static inline u32 *gen12_emit_pipe_control(u32 *batch, u32 flags0, u32 flags1, u32 offset)
{
return __gen8_emit_pipe_control(batch, flags0, flags1, offset);
}
static inline u32 *
__gen8_emit_write_rcs(u32 *cs, u32 value, u32 offset, u32 flags0, u32 flags1)
{
*cs++ = GFX_OP_PIPE_CONTROL(6) | flags0;
*cs++ = flags1 | PIPE_CONTROL_QW_WRITE;
*cs++ = offset;
*cs++ = 0;
*cs++ = value;
*cs++ = 0; /* We're thrashing one extra dword. */
return cs;
}
static inline u32*
gen8_emit_ggtt_write_rcs(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
/* We're using qword write, offset should be aligned to 8 bytes. */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_write_rcs(cs,
value,
gtt_offset,
0,
flags | PIPE_CONTROL_GLOBAL_GTT_IVB);
}
static inline u32*
gen12_emit_ggtt_write_rcs(u32 *cs, u32 value, u32 gtt_offset, u32 flags0, u32 flags1)
{
/* We're using qword write, offset should be aligned to 8 bytes. */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_write_rcs(cs,
value,
gtt_offset,
flags0,
flags1 | PIPE_CONTROL_GLOBAL_GTT_IVB);
}
static inline u32 *
__gen8_emit_flush_dw(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
*cs++ = (MI_FLUSH_DW + 1) | flags;
*cs++ = gtt_offset;
*cs++ = 0;
*cs++ = value;
return cs;
}
static inline u32 *
gen8_emit_ggtt_write(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
/* w/a: bit 5 needs to be zero for MI_FLUSH_DW address. */
GEM_BUG_ON(gtt_offset & (1 << 5));
/* Offset should be aligned to 8 bytes for both (QW/DW) write types */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_flush_dw(cs,
value,
gtt_offset | MI_FLUSH_DW_USE_GTT,
flags | MI_FLUSH_DW_OP_STOREDW);
}
#endif /* __GEN8_ENGINE_CS_H__ */ #endif /* __GEN8_ENGINE_CS_H__ */
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "i915_selftest.h" #include "i915_selftest.h"
#include "gt/intel_timeline.h" #include "gt/intel_timeline.h"
#include "intel_engine_types.h" #include "intel_engine_types.h"
#include "intel_gpu_commands.h"
#include "intel_workarounds.h" #include "intel_workarounds.h"
struct drm_printer; struct drm_printer;
...@@ -223,91 +222,6 @@ void intel_engine_get_instdone(const struct intel_engine_cs *engine, ...@@ -223,91 +222,6 @@ void intel_engine_get_instdone(const struct intel_engine_cs *engine,
void intel_engine_init_execlists(struct intel_engine_cs *engine); void intel_engine_init_execlists(struct intel_engine_cs *engine);
static inline u32 *__gen8_emit_pipe_control(u32 *batch, u32 flags0, u32 flags1, u32 offset)
{
memset(batch, 0, 6 * sizeof(u32));
batch[0] = GFX_OP_PIPE_CONTROL(6) | flags0;
batch[1] = flags1;
batch[2] = offset;
return batch + 6;
}
static inline u32 *gen8_emit_pipe_control(u32 *batch, u32 flags, u32 offset)
{
return __gen8_emit_pipe_control(batch, 0, flags, offset);
}
static inline u32 *gen12_emit_pipe_control(u32 *batch, u32 flags0, u32 flags1, u32 offset)
{
return __gen8_emit_pipe_control(batch, flags0, flags1, offset);
}
static inline u32 *
__gen8_emit_write_rcs(u32 *cs, u32 value, u32 offset, u32 flags0, u32 flags1)
{
*cs++ = GFX_OP_PIPE_CONTROL(6) | flags0;
*cs++ = flags1 | PIPE_CONTROL_QW_WRITE;
*cs++ = offset;
*cs++ = 0;
*cs++ = value;
*cs++ = 0; /* We're thrashing one extra dword. */
return cs;
}
static inline u32*
gen8_emit_ggtt_write_rcs(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
/* We're using qword write, offset should be aligned to 8 bytes. */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_write_rcs(cs,
value,
gtt_offset,
0,
flags | PIPE_CONTROL_GLOBAL_GTT_IVB);
}
static inline u32*
gen12_emit_ggtt_write_rcs(u32 *cs, u32 value, u32 gtt_offset, u32 flags0, u32 flags1)
{
/* We're using qword write, offset should be aligned to 8 bytes. */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_write_rcs(cs,
value,
gtt_offset,
flags0,
flags1 | PIPE_CONTROL_GLOBAL_GTT_IVB);
}
static inline u32 *
__gen8_emit_flush_dw(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
*cs++ = (MI_FLUSH_DW + 1) | flags;
*cs++ = gtt_offset;
*cs++ = 0;
*cs++ = value;
return cs;
}
static inline u32 *
gen8_emit_ggtt_write(u32 *cs, u32 value, u32 gtt_offset, u32 flags)
{
/* w/a: bit 5 needs to be zero for MI_FLUSH_DW address. */
GEM_BUG_ON(gtt_offset & (1 << 5));
/* Offset should be aligned to 8 bytes for both (QW/DW) write types */
GEM_BUG_ON(!IS_ALIGNED(gtt_offset, 8));
return __gen8_emit_flush_dw(cs,
value,
gtt_offset | MI_FLUSH_DW_USE_GTT,
flags | MI_FLUSH_DW_OP_STOREDW);
}
static inline void __intel_engine_reset(struct intel_engine_cs *engine, static inline void __intel_engine_reset(struct intel_engine_cs *engine,
bool stalled) bool stalled)
{ {
......
...@@ -27,7 +27,8 @@ ...@@ -27,7 +27,8 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "intel_renderstate.h" #include "intel_renderstate.h"
#include "gt/intel_context.h" #include "intel_context.h"
#include "intel_gpu_commands.h"
#include "intel_ring.h" #include "intel_ring.h"
static const struct intel_renderstate_rodata * static const struct intel_renderstate_rodata *
......
...@@ -5,9 +5,11 @@ ...@@ -5,9 +5,11 @@
*/ */
#include "gem/i915_gem_object.h" #include "gem/i915_gem_object.h"
#include "i915_drv.h" #include "i915_drv.h"
#include "i915_vma.h" #include "i915_vma.h"
#include "intel_engine.h" #include "intel_engine.h"
#include "intel_gpu_commands.h"
#include "intel_ring.h" #include "intel_ring.h"
#include "intel_timeline.h" #include "intel_timeline.h"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "intel_context.h" #include "intel_context.h"
#include "intel_engine_pm.h" #include "intel_engine_pm.h"
#include "intel_gpu_commands.h"
#include "intel_gt.h" #include "intel_gt.h"
#include "intel_ring.h" #include "intel_ring.h"
#include "intel_workarounds.h" #include "intel_workarounds.h"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/sort.h> #include <linux/sort.h>
#include "intel_gpu_commands.h"
#include "intel_gt_pm.h" #include "intel_gt_pm.h"
#include "intel_rps.h" #include "intel_rps.h"
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
* Copyright © 2018 Intel Corporation * Copyright © 2018 Intel Corporation
*/ */
#include "intel_gpu_commands.h"
#include "i915_selftest.h" #include "i915_selftest.h"
#include "selftest_engine.h" #include "selftest_engine.h"
#include "selftest_engine_heartbeat.h" #include "selftest_engine_heartbeat.h"
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
*/ */
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_gpu_commands.h"
#include "i915_selftest.h" #include "i915_selftest.h"
#include "gem/selftests/mock_context.h" #include "gem/selftests/mock_context.h"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "intel_context.h" #include "intel_context.h"
#include "intel_engine_pm.h" #include "intel_engine_pm.h"
#include "intel_gpu_commands.h"
#include "intel_gt_requests.h" #include "intel_gt_requests.h"
#include "intel_ring.h" #include "intel_ring.h"
#include "selftest_rc6.h" #include "selftest_rc6.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "i915_memcpy.h" #include "i915_memcpy.h"
#include "i915_selftest.h" #include "i915_selftest.h"
#include "intel_gpu_commands.h"
#include "selftests/igt_reset.h" #include "selftests/igt_reset.h"
#include "selftests/igt_atomic.h" #include "selftests/igt_atomic.h"
#include "selftests/igt_spinner.h" #include "selftests/igt_spinner.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "intel_context.h" #include "intel_context.h"
#include "intel_engine_heartbeat.h" #include "intel_engine_heartbeat.h"
#include "intel_engine_pm.h" #include "intel_engine_pm.h"
#include "intel_gpu_commands.h"
#include "intel_gt.h" #include "intel_gt.h"
#include "intel_gt_requests.h" #include "intel_gt_requests.h"
#include "intel_ring.h" #include "intel_ring.h"
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include "i915_drv.h" #include "i915_drv.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
#include "gvt.h" #include "gvt.h"
#include "i915_pvinfo.h" #include "i915_pvinfo.h"
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
#include "gvt.h" #include "gvt.h"
#include "trace.h" #include "trace.h"
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
*/ */
#include "gt/intel_engine.h" #include "gt/intel_engine.h"
#include "gt/intel_gpu_commands.h"
#include "i915_drv.h" #include "i915_drv.h"
#include "i915_memcpy.h" #include "i915_memcpy.h"
......
...@@ -199,6 +199,7 @@ ...@@ -199,6 +199,7 @@
#include "gt/intel_engine_pm.h" #include "gt/intel_engine_pm.h"
#include "gt/intel_engine_user.h" #include "gt/intel_engine_user.h"
#include "gt/intel_execlists_submission.h" #include "gt/intel_execlists_submission.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gt/intel_lrc_reg.h" #include "gt/intel_lrc_reg.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "gem/i915_gem_context.h" #include "gem/i915_gem_context.h"
#include "gt/intel_breadcrumbs.h" #include "gt/intel_breadcrumbs.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_ring.h" #include "gt/intel_ring.h"
#include "gt/intel_rps.h" #include "gt/intel_rps.h"
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "gem/i915_gem_context.h" #include "gem/i915_gem_context.h"
#include "gem/selftests/mock_context.h" #include "gem/selftests/mock_context.h"
#include "gt/intel_context.h" #include "gt/intel_context.h"
#include "gt/intel_gpu_commands.h"
#include "i915_random.h" #include "i915_random.h"
#include "i915_selftest.h" #include "i915_selftest.h"
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* *
* Copyright © 2018 Intel Corporation * Copyright © 2018 Intel Corporation
*/ */
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h" #include "gt/intel_gt.h"
#include "gem/selftests/igt_gem_utils.h" #include "gem/selftests/igt_gem_utils.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment