X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Filo%2Filo_context.h;h=1610358ecd3ffb27615c08a5dcc7bd7d516cdbc2;hb=1da538f85bc327f4ae5e1a5b90c15b99f8cf48df;hp=be7d94df1dcd1ef65b91e2e329d2b2cd60289ca1;hpb=29b938d9f43a4bc355ee05cad2c9796ea7ee93dd;p=mesa.git diff --git a/src/gallium/drivers/ilo/ilo_context.h b/src/gallium/drivers/ilo/ilo_context.h index be7d94df1dc..1610358ecd3 100644 --- a/src/gallium/drivers/ilo/ilo_context.h +++ b/src/gallium/drivers/ilo/ilo_context.h @@ -29,105 +29,49 @@ #define ILO_CONTEXT_H #include "pipe/p_context.h" +#include "util/u_slab.h" -#include "ilo_gpe.h" #include "ilo_common.h" +#include "ilo_cp.h" +#include "ilo_draw.h" +#include "ilo_state.h" -struct blitter_context; +struct u_upload_mgr; struct intel_winsys; -struct intel_bo; -struct ilo_3d; -struct ilo_cp; + +struct ilo_blitter; +struct ilo_render; struct ilo_screen; -struct ilo_shader_state; +struct ilo_shader_cache; struct ilo_context { struct pipe_context base; struct intel_winsys *winsys; - struct ilo_dev_info *dev; + struct ilo_dev *dev; + + struct util_slab_mempool transfer_mempool; struct ilo_cp *cp; - struct intel_bo *last_cp_bo; struct ilo_shader_cache *shader_cache; - struct ilo_3d *hw3d; - struct blitter_context *blitter; - - uint32_t dirty; - - struct ilo_vb_state vb; - const struct ilo_ve_state *ve; - struct ilo_ib_state ib; - - struct ilo_so_state so; + struct ilo_blitter *blitter; + struct ilo_render *render; - struct pipe_clip_state clip; - struct ilo_viewport_state viewport; - struct ilo_scissor_state scissor; + struct u_upload_mgr *uploader; - const struct ilo_rasterizer_state *rasterizer; - struct pipe_poly_stipple poly_stipple; - unsigned sample_mask; - - struct pipe_blend_state *blend; - struct pipe_depth_stencil_alpha_state *depth_stencil_alpha; - struct ilo_shader_state *fs; - struct ilo_shader_state *vs; - struct ilo_shader_state *gs; - - struct pipe_blend_color blend_color; - struct pipe_stencil_ref stencil_ref; - struct pipe_framebuffer_state framebuffer; - - struct { - struct pipe_sampler_state *samplers[ILO_MAX_SAMPLERS]; - unsigned num_samplers; - } samplers[PIPE_SHADER_TYPES]; + struct ilo_state_vector state_vector; struct { - struct pipe_sampler_view *views[ILO_MAX_SAMPLER_VIEWS]; - unsigned num_views; - } sampler_views[PIPE_SHADER_TYPES]; + struct pipe_query *query; + bool condition; + unsigned mode; + } render_condition; struct { - struct pipe_constant_buffer buffers[ILO_MAX_CONST_BUFFERS]; - unsigned num_buffers; - } constant_buffers[PIPE_SHADER_TYPES]; - - struct { - struct pipe_surface *surfaces[PIPE_MAX_SHADER_RESOURCES]; - unsigned num_surfaces; - } shader_resources; - - struct ilo_shader_state *compute; - - struct { - struct pipe_surface *surfaces[PIPE_MAX_SHADER_RESOURCES]; - unsigned num_surfaces; - } compute_resources; - - struct { - /* - * XXX These should not be treated as real resources (and there could be - * thousands of them). They should be treated as regions in GLOBAL - * resource, which is the only real resource. - * - * That is, a resource here should instead be - * - * struct ilo_global_region { - * struct pipe_resource base; - * int offset; - * int size; - * }; - * - * and it describes the region [offset, offset + size) in GLOBAL - * resource. - */ - struct pipe_resource *resources[PIPE_MAX_SHADER_RESOURCES]; - uint32_t *handles[PIPE_MAX_SHADER_RESOURCES]; - unsigned num_resources; - } global_binding; + struct ilo_cp_owner cp_owner; + struct list_head queries; + } draw; }; static inline struct ilo_context * @@ -139,4 +83,7 @@ ilo_context(struct pipe_context *pipe) void ilo_init_context_functions(struct ilo_screen *is); +bool +ilo_skip_rendering(struct ilo_context *ilo); + #endif /* ILO_CONTEXT_H */