nv50/ir: fix constant folding for OP_MUL subop HIGH
[mesa.git] / src / gallium / drivers / ilo / ilo_gpe.h
index aa979f31a09a28a0c4c9ff88fd0f4afb9146b716..684626d885608959443ba1a1bcf8267491016051 100644 (file)
@@ -63,9 +63,15 @@ 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;
 
-   struct pipe_resource *resource;
+   /* 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;
 };
 
@@ -113,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 {
@@ -147,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 {
@@ -221,7 +230,7 @@ struct ilo_cbuf_cso {
 
 struct ilo_cbuf_state {
    struct ilo_cbuf_cso cso[ILO_MAX_CONST_BUFFERS];
-   unsigned count;
+   uint32_t enabled_mask;
 };
 
 struct ilo_resource_state {
@@ -247,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 {
@@ -371,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
@@ -397,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
@@ -443,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,
@@ -517,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 */