ilo: use ilo_image exclusively in core
[mesa.git] / src / gallium / drivers / ilo / ilo_render.h
index dd4c3c0f95a863e11092a370c215189956cb3982..a85b2800fb1373f934461739135b175ec9e9a968 100644 (file)
 #define ILO_RENDER_H
 
 #include "ilo_common.h"
-#include "ilo_state.h"
 
-struct intel_bo;
+struct pipe_constant_buffer;
 struct ilo_blitter;
-struct ilo_cp;
+struct ilo_builder;
 struct ilo_query;
+struct ilo_render;
 struct ilo_state_vector;
 
-enum ilo_render_action {
-   ILO_RENDER_DRAW,
-};
-
-/**
- * Render Engine.
- */
-struct ilo_render {
-   const struct ilo_dev_info *dev;
-   struct ilo_builder *builder;
-
-   struct intel_bo *workaround_bo;
-
-   uint32_t packed_sample_position_1x;
-   uint32_t packed_sample_position_4x;
-   uint32_t packed_sample_position_8x[2];
-
-   int (*estimate_size)(struct ilo_render *render,
-                        enum ilo_render_action action,
-                        const void *arg);
-
-   void (*emit_draw)(struct ilo_render *render,
-                     const struct ilo_state_vector *vec);
-
-   bool hw_ctx_changed;
-
-   /*
-    * Any state that involves resources needs to be re-emitted when the
-    * batch bo changed.  This is because we do not pin the resources and
-    * their offsets (or existence) may change between batch buffers.
-    */
-   bool batch_bo_changed;
-   bool state_bo_changed;
-   bool instruction_bo_changed;
-
-   /**
-    * HW states.
-    */
-   struct ilo_render_state {
-      /*
-       * When a WA is needed before some command, we always emit the WA right
-       * before the command.  Knowing what have already been done since last
-       * 3DPRIMITIVE allows us to skip some WAs.
-       */
-      uint32_t current_pipe_control_dw1;
-
-      /*
-       * When a WA is needed after some command, we may have the WA follow the
-       * command immediately or defer it.  If this is non-zero, a PIPE_CONTROL
-       * will be emitted before 3DPRIMITIVE.
-       */
-      uint32_t deferred_pipe_control_dw1;
-
-      bool primitive_restart;
-      int reduced_prim;
-      int so_max_vertices;
-
-      uint32_t SF_VIEWPORT;
-      uint32_t CLIP_VIEWPORT;
-      uint32_t SF_CLIP_VIEWPORT; /* GEN7+ */
-      uint32_t CC_VIEWPORT;
-
-      uint32_t COLOR_CALC_STATE;
-      uint32_t BLEND_STATE;
-      uint32_t DEPTH_STENCIL_STATE;
-
-      uint32_t SCISSOR_RECT;
-
-      struct {
-         uint32_t BINDING_TABLE_STATE;
-         int BINDING_TABLE_STATE_size;
-         uint32_t SURFACE_STATE[ILO_MAX_VS_SURFACES];
-         uint32_t SAMPLER_STATE;
-         uint32_t SAMPLER_BORDER_COLOR_STATE[ILO_MAX_SAMPLERS];
-         uint32_t PUSH_CONSTANT_BUFFER;
-         int PUSH_CONSTANT_BUFFER_size;
-      } vs;
-
-      struct {
-         uint32_t BINDING_TABLE_STATE;
-         int BINDING_TABLE_STATE_size;
-         uint32_t SURFACE_STATE[ILO_MAX_GS_SURFACES];
-         bool active;
-      } gs;
-
-      struct {
-         uint32_t BINDING_TABLE_STATE;
-         int BINDING_TABLE_STATE_size;
-         uint32_t SURFACE_STATE[ILO_MAX_WM_SURFACES];
-         uint32_t SAMPLER_STATE;
-         uint32_t SAMPLER_BORDER_COLOR_STATE[ILO_MAX_SAMPLERS];
-         uint32_t PUSH_CONSTANT_BUFFER;
-         int PUSH_CONSTANT_BUFFER_size;
-      } wm;
-   } state;
-};
-
 struct ilo_render *
 ilo_render_create(struct ilo_builder *builder);
 
@@ -143,24 +46,6 @@ ilo_render_destroy(struct ilo_render *render);
 /**
  * Estimate the size of an action.
  */
-static inline int
-ilo_render_estimate_size(struct ilo_render *render,
-                         enum ilo_render_action action,
-                         const void *arg)
-{
-   return render->estimate_size(render, action, arg);
-}
-
-/**
- * Emit context states and 3DPRIMITIVE.
- */
-static inline void
-ilo_render_emit_draw(struct ilo_render *render,
-                     const struct ilo_state_vector *vec)
-{
-   render->emit_draw(render, vec);
-}
-
 void
 ilo_render_get_sample_position(const struct ilo_render *render,
                                unsigned sample_count,
@@ -195,4 +80,25 @@ void
 ilo_render_emit_rectlist(struct ilo_render *render,
                          const struct ilo_blitter *blitter);
 
+int
+ilo_render_get_draw_len(const struct ilo_render *render,
+                        const struct ilo_state_vector *vec);
+
+void
+ilo_render_emit_draw(struct ilo_render *render,
+                     const struct ilo_state_vector *vec);
+
+int
+ilo_render_get_launch_grid_len(const struct ilo_render *render,
+                               const struct ilo_state_vector *vec);
+
+void
+ilo_render_emit_launch_grid(struct ilo_render *render,
+                            const struct ilo_state_vector *vec,
+                            const unsigned thread_group_offset[3],
+                            const unsigned thread_group_dim[3],
+                            unsigned thread_group_size,
+                            const struct pipe_constant_buffer *input,
+                            uint32_t pc);
+
 #endif /* ILO_RENDER_H */