From 4228cf37467688dc4f6a10c8d2c42c6243f789e9 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 29 May 2013 15:43:38 +0800 Subject: ilo: switch to ilo states for shaders and resources Define and use struct ilo_sampler_state; struct ilo_view_state; struct ilo_cbuf_state; struct ilo_resource_state; struct ilo_global_binding; in ilo_context. --- src/gallium/drivers/ilo/ilo_context.h | 65 ++++++++--------------------------- 1 file changed, 14 insertions(+), 51 deletions(-) (limited to 'src/gallium/drivers/ilo/ilo_context.h') diff --git a/src/gallium/drivers/ilo/ilo_context.h b/src/gallium/drivers/ilo/ilo_context.h index 56ef8bef5c7..b05ffe4ad93 100644 --- a/src/gallium/drivers/ilo/ilo_context.h +++ b/src/gallium/drivers/ilo/ilo_context.h @@ -60,6 +60,9 @@ struct ilo_context { const struct ilo_ve_state *ve; struct ilo_ib_state ib; + struct ilo_shader_state *vs; + struct ilo_shader_state *gs; + struct ilo_so_state so; struct pipe_clip_state clip; @@ -70,64 +73,24 @@ struct ilo_context { struct pipe_poly_stipple poly_stipple; unsigned sample_mask; + struct ilo_shader_state *fs; + const struct ilo_dsa_state *dsa; struct pipe_stencil_ref stencil_ref; const struct ilo_blend_state *blend; struct pipe_blend_color blend_color; struct ilo_fb_state fb; - struct ilo_shader_state *fs; - struct ilo_shader_state *vs; - struct ilo_shader_state *gs; + /* shader resources */ + struct ilo_sampler_state sampler[PIPE_SHADER_TYPES]; + struct ilo_view_state view[PIPE_SHADER_TYPES]; + struct ilo_cbuf_state cbuf[PIPE_SHADER_TYPES]; + struct ilo_resource_state resource; - struct { - struct pipe_sampler_state *samplers[ILO_MAX_SAMPLERS]; - unsigned num_samplers; - } samplers[PIPE_SHADER_TYPES]; - - struct { - struct pipe_sampler_view *views[ILO_MAX_SAMPLER_VIEWS]; - unsigned num_views; - } sampler_views[PIPE_SHADER_TYPES]; - - 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; + /* GPGPU */ + struct ilo_shader_state *cs; + struct ilo_resource_state cs_resource; + struct ilo_global_binding global_binding; }; static inline struct ilo_context * -- cgit v1.2.3