nv50/ir: fix constant folding for OP_MUL subop HIGH
[mesa.git] / src / gallium / drivers / ilo / ilo_gpe.h
index 5e313abd3869a2e8654bd4607608fee9f3fada50..684626d885608959443ba1a1bcf8267491016051 100644 (file)
@@ -63,7 +63,16 @@ struct ilo_vb_state {
 };
 
 struct ilo_ib_state {
-   struct pipe_index_buffer state;
+   struct pipe_resource *buffer;
+   const void *user_buffer;
+   unsigned offset;
+   unsigned index_size;
+
+   /* these are not valid until the state is finalized */
+   struct pipe_resource *hw_resource;
+   unsigned hw_index_size;
+   /* an offset to be added to pipe_draw_info::start */
+   int64_t draw_start_offset;
 };
 
 struct ilo_ve_cso {
@@ -110,6 +119,8 @@ struct ilo_viewport_state {
 struct ilo_scissor_state {
    /* SCISSOR_RECT */
    uint32_t payload[ILO_MAX_VIEWPORTS * 2];
+
+   struct pipe_scissor_state scissor0;
 };
 
 struct ilo_rasterizer_clip {
@@ -144,7 +155,8 @@ struct ilo_dsa_state {
    /* DEPTH_STENCIL_STATE */
    uint32_t payload[3];
 
-   struct pipe_alpha_state alpha;
+   uint32_t dw_alpha;
+   ubyte alpha_ref;
 };
 
 struct ilo_blend_cso {
@@ -207,11 +219,18 @@ struct ilo_view_state {
 struct ilo_cbuf_cso {
    struct pipe_resource *resource;
    struct ilo_view_surface surface;
+
+   /*
+    * this CSO is not so constant because user buffer needs to be uploaded in
+    * finalize_constant_buffers()
+    */
+   const void *user_buffer;
+   unsigned user_buffer_size;
 };
 
 struct ilo_cbuf_state {
    struct ilo_cbuf_cso cso[ILO_MAX_CONST_BUFFERS];
-   unsigned count;
+   uint32_t enabled_mask;
 };
 
 struct ilo_resource_state {
@@ -237,8 +256,11 @@ struct ilo_surface_cso {
 struct ilo_fb_state {
    struct pipe_framebuffer_state state;
 
+   struct ilo_view_surface null_rt;
    struct ilo_zs_surface null_zs;
+
    unsigned num_samples;
+   bool offset_to_layers;
 };
 
 struct ilo_global_binding {
@@ -361,7 +383,7 @@ ilo_gpe_init_view_surface_for_texture_gen6(const struct ilo_dev_info *dev,
                                            unsigned num_levels,
                                            unsigned first_layer,
                                            unsigned num_layers,
-                                           bool is_rt, bool render_cache_rw,
+                                           bool is_rt, bool offset_to_layer,
                                            struct ilo_view_surface *surf);
 
 void
@@ -387,7 +409,7 @@ ilo_gpe_init_view_surface_for_texture_gen7(const struct ilo_dev_info *dev,
                                            unsigned num_levels,
                                            unsigned first_layer,
                                            unsigned num_layers,
-                                           bool is_rt, bool render_cache_rw,
+                                           bool is_rt, bool offset_to_layer,
                                            struct ilo_view_surface *surf);
 
 static inline void
@@ -433,28 +455,27 @@ ilo_gpe_init_view_surface_for_texture(const struct ilo_dev_info *dev,
                                       unsigned num_levels,
                                       unsigned first_layer,
                                       unsigned num_layers,
-                                      bool is_rt, bool render_cache_rw,
+                                      bool is_rt, bool offset_to_layer,
                                       struct ilo_view_surface *surf)
 {
    if (dev->gen >= ILO_GEN(7)) {
       ilo_gpe_init_view_surface_for_texture_gen7(dev, tex, format,
             first_level, num_levels, first_layer, num_layers,
-            is_rt, render_cache_rw, surf);
+            is_rt, offset_to_layer, surf);
    }
    else {
       ilo_gpe_init_view_surface_for_texture_gen6(dev, tex, format,
             first_level, num_levels, first_layer, num_layers,
-            is_rt, render_cache_rw, surf);
+            is_rt, offset_to_layer, surf);
    }
 }
 
 void
 ilo_gpe_init_zs_surface(const struct ilo_dev_info *dev,
                         const struct ilo_texture *tex,
-                        enum pipe_format format,
-                        unsigned level,
+                        enum pipe_format format, unsigned level,
                         unsigned first_layer, unsigned num_layers,
-                        struct ilo_zs_surface *zs);
+                        bool offset_to_layer, struct ilo_zs_surface *zs);
 
 void
 ilo_gpe_init_vs_cso(const struct ilo_dev_info *dev,
@@ -507,4 +528,9 @@ ilo_gpe_init_fs_cso(const struct ilo_dev_info *dev,
    }
 }
 
+void
+ilo_gpe_set_fb(const struct ilo_dev_info *dev,
+               const struct pipe_framebuffer_state *state,
+               struct ilo_fb_state *fb);
+
 #endif /* ILO_GPE_H */