ilo: move intel_winsys.h to core
authorChia-I Wu <olvaffe@gmail.com>
Sat, 7 Mar 2015 20:26:45 +0000 (04:26 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sat, 2 May 2015 14:14:05 +0000 (22:14 +0800)
Add a new subdirectory and start moving files that do not depend on
ilo_screen/ilo_context to it.

21 files changed:
src/gallium/drivers/ilo/Makefile.sources
src/gallium/drivers/ilo/core/intel_winsys.h [new file with mode: 0644]
src/gallium/drivers/ilo/ilo_builder.h
src/gallium/drivers/ilo/ilo_builder_3d_bottom.h
src/gallium/drivers/ilo/ilo_builder_3d_top.h
src/gallium/drivers/ilo/ilo_builder_blt.h
src/gallium/drivers/ilo/ilo_builder_decode.c
src/gallium/drivers/ilo/ilo_builder_media.h
src/gallium/drivers/ilo/ilo_builder_mi.h
src/gallium/drivers/ilo/ilo_builder_render.h
src/gallium/drivers/ilo/ilo_cp.c
src/gallium/drivers/ilo/ilo_cp.h
src/gallium/drivers/ilo/ilo_draw.c
src/gallium/drivers/ilo/ilo_query.c
src/gallium/drivers/ilo/ilo_render.c
src/gallium/drivers/ilo/ilo_resource.h
src/gallium/drivers/ilo/ilo_screen.c
src/gallium/drivers/ilo/ilo_shader.c
src/gallium/drivers/ilo/ilo_state_3d.h
src/gallium/drivers/ilo/intel_winsys.h [deleted file]
src/gallium/winsys/intel/drm/intel_drm_winsys.c

index b07362f4f9a8c4b59675ba9867d5eaf076e4bd4c..dbdfffe7a4f2e84b192eaa50f55867c32c1de483 100644 (file)
@@ -1,4 +1,5 @@
 C_SOURCES := \
+       core/intel_winsys.h \
        ilo_blit.c \
        ilo_blit.h \
        ilo_blitter.c \
@@ -56,7 +57,6 @@ C_SOURCES := \
        ilo_transfer.h \
        ilo_video.c \
        ilo_video.h \
-       intel_winsys.h \
        \
        shader/ilo_shader_cs.c \
        shader/ilo_shader_fs.c \
diff --git a/src/gallium/drivers/ilo/core/intel_winsys.h b/src/gallium/drivers/ilo/core/intel_winsys.h
new file mode 100644 (file)
index 0000000..afd038c
--- /dev/null
@@ -0,0 +1,329 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2012-2014 LunarG, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef INTEL_WINSYS_H
+#define INTEL_WINSYS_H
+
+#include "pipe/p_compiler.h"
+
+/* this is compatible with i915_drm.h's definitions */
+enum intel_ring_type {
+   INTEL_RING_RENDER    = 1,
+   INTEL_RING_BSD       = 2,
+   INTEL_RING_BLT       = 3,
+   INTEL_RING_VEBOX     = 4,
+};
+
+/* this is compatible with i915_drm.h's definitions */
+enum intel_exec_flag {
+   INTEL_EXEC_GEN7_SOL_RESET  = 1 << 8,
+};
+
+/* this is compatible with i915_drm.h's definitions */
+enum intel_reloc_flag {
+   INTEL_RELOC_FENCE          = 1 << 0,
+   INTEL_RELOC_GGTT           = 1 << 1,
+   INTEL_RELOC_WRITE          = 1 << 2,
+};
+
+/* this is compatible with i915_drm.h's definitions */
+enum intel_tiling_mode {
+   INTEL_TILING_NONE = 0,
+   INTEL_TILING_X    = 1,
+   INTEL_TILING_Y    = 2,
+};
+
+struct winsys_handle;
+struct intel_winsys;
+struct intel_context;
+struct intel_bo;
+
+struct intel_winsys_info {
+   int devid;
+
+   /* the sizes of the aperture in bytes */
+   size_t aperture_total;
+   size_t aperture_mappable;
+
+   bool has_llc;
+   bool has_address_swizzling;
+   bool has_logical_context;
+   bool has_ppgtt;
+
+   /* valid registers for intel_winsys_read_reg() */
+   bool has_timestamp;
+
+   /* valid flags for intel_winsys_submit_bo() */
+   bool has_gen7_sol_reset;
+};
+
+void
+intel_winsys_destroy(struct intel_winsys *winsys);
+
+const struct intel_winsys_info *
+intel_winsys_get_info(const struct intel_winsys *winsys);
+
+/**
+ * Create a logical context for use with the render ring.
+ */
+struct intel_context *
+intel_winsys_create_context(struct intel_winsys *winsys);
+
+/**
+ * Destroy a logical context.
+ */
+void
+intel_winsys_destroy_context(struct intel_winsys *winsys,
+                             struct intel_context *ctx);
+
+/**
+ * Read a register.  Only registers that are considered safe, such as
+ *
+ *   TIMESTAMP (0x2358)
+ *
+ * can be read.
+ */
+int
+intel_winsys_read_reg(struct intel_winsys *winsys,
+                      uint32_t reg, uint64_t *val);
+
+/**
+ * Return the numbers of submissions lost due to GPU reset.
+ *
+ * \param active_lost      Number of lost active/guilty submissions
+ * \param pending_lost     Number of lost pending/innocent submissions
+ */
+int
+intel_winsys_get_reset_stats(struct intel_winsys *winsys,
+                             struct intel_context *ctx,
+                             uint32_t *active_lost,
+                             uint32_t *pending_lost);
+/**
+ * Allocate a buffer object.
+ *
+ * \param name             Informative description of the bo.
+ * \param size             Size of the bo.
+ * \param cpu_init         Will be initialized by CPU.
+ */
+struct intel_bo *
+intel_winsys_alloc_bo(struct intel_winsys *winsys,
+                      const char *name,
+                      unsigned long size,
+                      bool cpu_init);
+
+/**
+ * Create a bo from a user memory pointer.  Both \p userptr and \p size must
+ * be page aligned.
+ */
+struct intel_bo *
+intel_winsys_import_userptr(struct intel_winsys *winsys,
+                            const char *name,
+                            void *userptr,
+                            unsigned long size,
+                            unsigned long flags);
+
+/**
+ * Create a bo from a winsys handle.
+ */
+struct intel_bo *
+intel_winsys_import_handle(struct intel_winsys *winsys,
+                           const char *name,
+                           const struct winsys_handle *handle,
+                           unsigned long height,
+                           enum intel_tiling_mode *tiling,
+                           unsigned long *pitch);
+
+/**
+ * Export \p bo as a winsys handle for inter-process sharing.  \p tiling and
+ * \p pitch must match those set by \p intel_bo_set_tiling().
+ */
+int
+intel_winsys_export_handle(struct intel_winsys *winsys,
+                           struct intel_bo *bo,
+                           enum intel_tiling_mode tiling,
+                           unsigned long pitch,
+                           unsigned long height,
+                           struct winsys_handle *handle);
+
+/**
+ * Return true when buffer objects directly specified in \p bo_array, and
+ * those indirectly referenced by them, can fit in the aperture space.
+ */
+bool
+intel_winsys_can_submit_bo(struct intel_winsys *winsys,
+                           struct intel_bo **bo_array,
+                           int count);
+
+/**
+ * Submit \p bo for execution.
+ *
+ * \p bo and all bos referenced by \p bo will be considered busy until all
+ * commands are parsed and executed.  \p ctx is ignored when the bo is not
+ * submitted to the render ring.
+ */
+int
+intel_winsys_submit_bo(struct intel_winsys *winsys,
+                       enum intel_ring_type ring,
+                       struct intel_bo *bo, int used,
+                       struct intel_context *ctx,
+                       unsigned long flags);
+
+/**
+ * Decode the commands contained in \p bo.  For debugging.
+ *
+ * \param bo      Batch buffer to decode.
+ * \param used    Size of the commands in bytes.
+ */
+void
+intel_winsys_decode_bo(struct intel_winsys *winsys,
+                       struct intel_bo *bo, int used);
+
+/**
+ * Increase the reference count of \p bo.  No-op when \p bo is NULL.
+ */
+struct intel_bo *
+intel_bo_ref(struct intel_bo *bo);
+
+/**
+ * Decrease the reference count of \p bo.  When the reference count reaches
+ * zero, \p bo is destroyed.  No-op when \p bo is NULL.
+ */
+void
+intel_bo_unref(struct intel_bo *bo);
+
+/**
+ * Set the tiling of \p bo.  The info is used by GTT mapping and bo export.
+ */
+int
+intel_bo_set_tiling(struct intel_bo *bo,
+                    enum intel_tiling_mode tiling,
+                    unsigned long pitch);
+
+/**
+ * Map \p bo for CPU access.  Recursive mapping is allowed.
+ *
+ * map() maps the backing store into CPU address space, cached.  It will block
+ * if the bo is busy.  This variant allows fastest random reads and writes,
+ * but the caller needs to handle tiling or swizzling manually if the bo is
+ * tiled or swizzled.  If write is enabled and there is no shared last-level
+ * cache (LLC), the CPU cache will be flushed, which is expensive.
+ *
+ * map_gtt() maps the bo for MMIO access, uncached but write-combined.  It
+ * will block if the bo is busy.  This variant promises a reasonable speed for
+ * sequential writes, but reads would be very slow.  Callers always have a
+ * linear view of the bo.
+ *
+ * map_async() and map_gtt_async() work similar to map() and map_gtt()
+ * respectively, except that they do not block.
+ */
+void *
+intel_bo_map(struct intel_bo *bo, bool write_enable);
+
+void *
+intel_bo_map_async(struct intel_bo *bo);
+
+void *
+intel_bo_map_gtt(struct intel_bo *bo);
+
+void *
+intel_bo_map_gtt_async(struct intel_bo *bo);
+
+/**
+ * Unmap \p bo.
+ */
+void
+intel_bo_unmap(struct intel_bo *bo);
+
+/**
+ * Write data to \p bo.
+ */
+int
+intel_bo_pwrite(struct intel_bo *bo, unsigned long offset,
+                unsigned long size, const void *data);
+
+/**
+ * Read data from the bo.
+ */
+int
+intel_bo_pread(struct intel_bo *bo, unsigned long offset,
+               unsigned long size, void *data);
+
+/**
+ * Add \p target_bo to the relocation list.
+ *
+ * When \p bo is submitted for execution, and if \p target_bo has moved,
+ * the kernel will patch \p bo at \p offset to \p target_bo->offset plus
+ * \p target_offset.
+ *
+ * \p presumed_offset should be written to \p bo at \p offset.
+ */
+int
+intel_bo_add_reloc(struct intel_bo *bo, uint32_t offset,
+                   struct intel_bo *target_bo, uint32_t target_offset,
+                   uint32_t flags, uint64_t *presumed_offset);
+
+/**
+ * Return the current number of relocations.
+ */
+int
+intel_bo_get_reloc_count(struct intel_bo *bo);
+
+/**
+ * Truncate all relocations except the first \p start ones.
+ *
+ * Combined with \p intel_bo_get_reloc_count(), they can be used to undo the
+ * \p intel_bo_add_reloc() calls that were just made.
+ */
+void
+intel_bo_truncate_relocs(struct intel_bo *bo, int start);
+
+/**
+ * Return true if \p target_bo is on the relocation list of \p bo, or on
+ * the relocation list of some bo that is referenced by \p bo.
+ */
+bool
+intel_bo_has_reloc(struct intel_bo *bo, struct intel_bo *target_bo);
+
+/**
+ * Wait until \bo is idle, or \p timeout nanoseconds have passed.  A
+ * negative timeout means to wait indefinitely.
+ *
+ * \return 0 only when \p bo is idle
+ */
+int
+intel_bo_wait(struct intel_bo *bo, int64_t timeout);
+
+/**
+ * Return true if \p bo is busy.
+ */
+static inline bool
+intel_bo_is_busy(struct intel_bo *bo)
+{
+   return (intel_bo_wait(bo, 0) != 0);
+}
+
+#endif /* INTEL_WINSYS_H */
index e0e9f5359280dcc484aab8a2f6046a3f6bb6b9ea..6e58a6b45daa7928ba76e66af9bb6b4fa3cfcf5a 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef ILO_BUILDER_H
 #define ILO_BUILDER_H
 
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 #include "ilo_common.h"
 
 enum ilo_builder_writer_type {
index 4f203d1e9f5071373d0016ecb74f7ad424b77b2e..cad8bf275e9b4707c2dcffdd92f03148b23048d2 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_3D_BOTTOM_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_format.h"
index b968beb35c5e15b01667ca16bccf6fa7cb8fe70b..9fa53050dff5a3b39196a6297b6a1c85010e38cd 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_3D_TOP_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_resource.h"
index 327f6988cba10584093794ed34652d092837915c..72aa5c35afa723f448b8109ba69afadd7fe1c5fe 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_BLT_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_builder.h"
index 0bc0bb46767136d3d05e4529ac25c507c990f8d9..039346aa5de73ab7c4079e6fd8a2f239f9151772 100644 (file)
@@ -29,7 +29,7 @@
 #include <stdarg.h>
 #include "genhw/genhw.h"
 #include "shader/toy_compiler.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 #include "ilo_builder.h"
 
 static const uint32_t *
index f5d634f28e1399416a7ddeeaca5efd56127d465c..ed269441f9d4ea216c85b4fd7fba0ebc3a37c179 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_MEDIA_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_shader.h"
index 65ffc65e8b185e63f71db1fea23da2b5b3711c2e..a34edc7d7e0668907bb0114f3ff6f705a5ff0119 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_MI_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_builder.h"
index 34a2e2c248619d405afdd531b6645d3022f0509c..33d5a9249fb8663f8e09bfa91cfafd3aab666887 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_BUILDER_RENDER_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_builder.h"
index 9d2dffd5e16ec83b7a650473c3a14c88b43f28a0..4cbb2d75c9ec97023765011e3c25c045e3597313 100644 (file)
@@ -25,7 +25,7 @@
  *    Chia-I Wu <olv@lunarg.com>
  */
 
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_builder_mi.h"
 #include "ilo_shader.h"
index dcab55b6ee2e6bd4e7393c3842573a4bb91206c5..364a06a3b442b152482f8e42461fe5e1378f466b 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef ILO_CP_H
 #define ILO_CP_H
 
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_builder.h"
 #include "ilo_common.h"
index 02e5225f4cde51b4a666801ca0b0caee9fc61321..fc91fd312d22c7ee835d13ce09c835fb5850575d 100644 (file)
@@ -26,7 +26,7 @@
  */
 
 #include "util/u_prim.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_render.h"
 #include "ilo_blit.h"
index 7a2e5030e00749f999dbdf9ea0c57601f803023b..b3329bc3ce1a8d54fa7f9092c8a662db1e4f744d 100644 (file)
@@ -25,7 +25,7 @@
  *    Chia-I Wu <olv@lunarg.com>
  */
 
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_context.h"
 #include "ilo_cp.h"
index af18e89744f60802192c5f829ef756cb20560d0d..227faed8c58cd40dd95ee98022b7fe06113cf8c0 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "genhw/genhw.h"
 #include "util/u_prim.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_builder.h"
 #include "ilo_builder_mi.h"
index be42386b8e8b41f58bbd26cf51b74b5838d8faaf..930f4e9c9aff5074e3c48d27c73559e9cb578729 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef ILO_RESOURCE_H
 #define ILO_RESOURCE_H
 
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_layout.h"
index 80ea4c75241dac27d3a52e6ecff87ba76d2409df..d34c8394e6457a1bc7af8d4be68c66aa7198fb7b 100644 (file)
@@ -31,7 +31,7 @@
 #include "vl/vl_decoder.h"
 #include "vl/vl_video_buffer.h"
 #include "genhw/genhw.h" /* for GEN6_REG_TIMESTAMP */
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_context.h"
 #include "ilo_format.h"
index 0798ccc8186612f5c6488c10b8325e28957b1449..aa7826b6c32d24ff44f31f7aa7153a6b0cc8bb1a 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "genhw/genhw.h" /* for SBE setup */
 #include "tgsi/tgsi_parse.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "shader/ilo_shader_internal.h"
 #include "ilo_builder.h"
index cb4b89a7c0401b86e792d534c069c4e57aae4596..78f55a96af896dbf76a3b90f4037a06640ea9675 100644 (file)
@@ -29,7 +29,7 @@
 #define ILO_STATE_3D_H
 
 #include "genhw/genhw.h"
-#include "intel_winsys.h"
+#include "core/intel_winsys.h"
 
 #include "ilo_common.h"
 #include "ilo_state.h"
diff --git a/src/gallium/drivers/ilo/intel_winsys.h b/src/gallium/drivers/ilo/intel_winsys.h
deleted file mode 100644 (file)
index afd038c..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 2012-2014 LunarG, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- *    Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef INTEL_WINSYS_H
-#define INTEL_WINSYS_H
-
-#include "pipe/p_compiler.h"
-
-/* this is compatible with i915_drm.h's definitions */
-enum intel_ring_type {
-   INTEL_RING_RENDER    = 1,
-   INTEL_RING_BSD       = 2,
-   INTEL_RING_BLT       = 3,
-   INTEL_RING_VEBOX     = 4,
-};
-
-/* this is compatible with i915_drm.h's definitions */
-enum intel_exec_flag {
-   INTEL_EXEC_GEN7_SOL_RESET  = 1 << 8,
-};
-
-/* this is compatible with i915_drm.h's definitions */
-enum intel_reloc_flag {
-   INTEL_RELOC_FENCE          = 1 << 0,
-   INTEL_RELOC_GGTT           = 1 << 1,
-   INTEL_RELOC_WRITE          = 1 << 2,
-};
-
-/* this is compatible with i915_drm.h's definitions */
-enum intel_tiling_mode {
-   INTEL_TILING_NONE = 0,
-   INTEL_TILING_X    = 1,
-   INTEL_TILING_Y    = 2,
-};
-
-struct winsys_handle;
-struct intel_winsys;
-struct intel_context;
-struct intel_bo;
-
-struct intel_winsys_info {
-   int devid;
-
-   /* the sizes of the aperture in bytes */
-   size_t aperture_total;
-   size_t aperture_mappable;
-
-   bool has_llc;
-   bool has_address_swizzling;
-   bool has_logical_context;
-   bool has_ppgtt;
-
-   /* valid registers for intel_winsys_read_reg() */
-   bool has_timestamp;
-
-   /* valid flags for intel_winsys_submit_bo() */
-   bool has_gen7_sol_reset;
-};
-
-void
-intel_winsys_destroy(struct intel_winsys *winsys);
-
-const struct intel_winsys_info *
-intel_winsys_get_info(const struct intel_winsys *winsys);
-
-/**
- * Create a logical context for use with the render ring.
- */
-struct intel_context *
-intel_winsys_create_context(struct intel_winsys *winsys);
-
-/**
- * Destroy a logical context.
- */
-void
-intel_winsys_destroy_context(struct intel_winsys *winsys,
-                             struct intel_context *ctx);
-
-/**
- * Read a register.  Only registers that are considered safe, such as
- *
- *   TIMESTAMP (0x2358)
- *
- * can be read.
- */
-int
-intel_winsys_read_reg(struct intel_winsys *winsys,
-                      uint32_t reg, uint64_t *val);
-
-/**
- * Return the numbers of submissions lost due to GPU reset.
- *
- * \param active_lost      Number of lost active/guilty submissions
- * \param pending_lost     Number of lost pending/innocent submissions
- */
-int
-intel_winsys_get_reset_stats(struct intel_winsys *winsys,
-                             struct intel_context *ctx,
-                             uint32_t *active_lost,
-                             uint32_t *pending_lost);
-/**
- * Allocate a buffer object.
- *
- * \param name             Informative description of the bo.
- * \param size             Size of the bo.
- * \param cpu_init         Will be initialized by CPU.
- */
-struct intel_bo *
-intel_winsys_alloc_bo(struct intel_winsys *winsys,
-                      const char *name,
-                      unsigned long size,
-                      bool cpu_init);
-
-/**
- * Create a bo from a user memory pointer.  Both \p userptr and \p size must
- * be page aligned.
- */
-struct intel_bo *
-intel_winsys_import_userptr(struct intel_winsys *winsys,
-                            const char *name,
-                            void *userptr,
-                            unsigned long size,
-                            unsigned long flags);
-
-/**
- * Create a bo from a winsys handle.
- */
-struct intel_bo *
-intel_winsys_import_handle(struct intel_winsys *winsys,
-                           const char *name,
-                           const struct winsys_handle *handle,
-                           unsigned long height,
-                           enum intel_tiling_mode *tiling,
-                           unsigned long *pitch);
-
-/**
- * Export \p bo as a winsys handle for inter-process sharing.  \p tiling and
- * \p pitch must match those set by \p intel_bo_set_tiling().
- */
-int
-intel_winsys_export_handle(struct intel_winsys *winsys,
-                           struct intel_bo *bo,
-                           enum intel_tiling_mode tiling,
-                           unsigned long pitch,
-                           unsigned long height,
-                           struct winsys_handle *handle);
-
-/**
- * Return true when buffer objects directly specified in \p bo_array, and
- * those indirectly referenced by them, can fit in the aperture space.
- */
-bool
-intel_winsys_can_submit_bo(struct intel_winsys *winsys,
-                           struct intel_bo **bo_array,
-                           int count);
-
-/**
- * Submit \p bo for execution.
- *
- * \p bo and all bos referenced by \p bo will be considered busy until all
- * commands are parsed and executed.  \p ctx is ignored when the bo is not
- * submitted to the render ring.
- */
-int
-intel_winsys_submit_bo(struct intel_winsys *winsys,
-                       enum intel_ring_type ring,
-                       struct intel_bo *bo, int used,
-                       struct intel_context *ctx,
-                       unsigned long flags);
-
-/**
- * Decode the commands contained in \p bo.  For debugging.
- *
- * \param bo      Batch buffer to decode.
- * \param used    Size of the commands in bytes.
- */
-void
-intel_winsys_decode_bo(struct intel_winsys *winsys,
-                       struct intel_bo *bo, int used);
-
-/**
- * Increase the reference count of \p bo.  No-op when \p bo is NULL.
- */
-struct intel_bo *
-intel_bo_ref(struct intel_bo *bo);
-
-/**
- * Decrease the reference count of \p bo.  When the reference count reaches
- * zero, \p bo is destroyed.  No-op when \p bo is NULL.
- */
-void
-intel_bo_unref(struct intel_bo *bo);
-
-/**
- * Set the tiling of \p bo.  The info is used by GTT mapping and bo export.
- */
-int
-intel_bo_set_tiling(struct intel_bo *bo,
-                    enum intel_tiling_mode tiling,
-                    unsigned long pitch);
-
-/**
- * Map \p bo for CPU access.  Recursive mapping is allowed.
- *
- * map() maps the backing store into CPU address space, cached.  It will block
- * if the bo is busy.  This variant allows fastest random reads and writes,
- * but the caller needs to handle tiling or swizzling manually if the bo is
- * tiled or swizzled.  If write is enabled and there is no shared last-level
- * cache (LLC), the CPU cache will be flushed, which is expensive.
- *
- * map_gtt() maps the bo for MMIO access, uncached but write-combined.  It
- * will block if the bo is busy.  This variant promises a reasonable speed for
- * sequential writes, but reads would be very slow.  Callers always have a
- * linear view of the bo.
- *
- * map_async() and map_gtt_async() work similar to map() and map_gtt()
- * respectively, except that they do not block.
- */
-void *
-intel_bo_map(struct intel_bo *bo, bool write_enable);
-
-void *
-intel_bo_map_async(struct intel_bo *bo);
-
-void *
-intel_bo_map_gtt(struct intel_bo *bo);
-
-void *
-intel_bo_map_gtt_async(struct intel_bo *bo);
-
-/**
- * Unmap \p bo.
- */
-void
-intel_bo_unmap(struct intel_bo *bo);
-
-/**
- * Write data to \p bo.
- */
-int
-intel_bo_pwrite(struct intel_bo *bo, unsigned long offset,
-                unsigned long size, const void *data);
-
-/**
- * Read data from the bo.
- */
-int
-intel_bo_pread(struct intel_bo *bo, unsigned long offset,
-               unsigned long size, void *data);
-
-/**
- * Add \p target_bo to the relocation list.
- *
- * When \p bo is submitted for execution, and if \p target_bo has moved,
- * the kernel will patch \p bo at \p offset to \p target_bo->offset plus
- * \p target_offset.
- *
- * \p presumed_offset should be written to \p bo at \p offset.
- */
-int
-intel_bo_add_reloc(struct intel_bo *bo, uint32_t offset,
-                   struct intel_bo *target_bo, uint32_t target_offset,
-                   uint32_t flags, uint64_t *presumed_offset);
-
-/**
- * Return the current number of relocations.
- */
-int
-intel_bo_get_reloc_count(struct intel_bo *bo);
-
-/**
- * Truncate all relocations except the first \p start ones.
- *
- * Combined with \p intel_bo_get_reloc_count(), they can be used to undo the
- * \p intel_bo_add_reloc() calls that were just made.
- */
-void
-intel_bo_truncate_relocs(struct intel_bo *bo, int start);
-
-/**
- * Return true if \p target_bo is on the relocation list of \p bo, or on
- * the relocation list of some bo that is referenced by \p bo.
- */
-bool
-intel_bo_has_reloc(struct intel_bo *bo, struct intel_bo *target_bo);
-
-/**
- * Wait until \bo is idle, or \p timeout nanoseconds have passed.  A
- * negative timeout means to wait indefinitely.
- *
- * \return 0 only when \p bo is idle
- */
-int
-intel_bo_wait(struct intel_bo *bo, int64_t timeout);
-
-/**
- * Return true if \p bo is busy.
- */
-static inline bool
-intel_bo_is_busy(struct intel_bo *bo)
-{
-   return (intel_bo_wait(bo, 0) != 0);
-}
-
-#endif /* INTEL_WINSYS_H */
index b5ffceb7e65bee0988d18eec1315d32d660e2ca1..1c5aabe330445a9a1d585f670fcdb397bff6179a 100644 (file)
@@ -41,7 +41,7 @@
 #include "util/u_inlines.h"
 #include "util/u_memory.h"
 #include "util/u_debug.h"
-#include "ilo/intel_winsys.h"
+#include "ilo/core/intel_winsys.h"
 #include "intel_drm_public.h"
 
 struct intel_winsys {