From 4be7b7ee8597cd6bd38c0678deb23928a3acb59f Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 25 Sep 2014 16:41:31 +0800 Subject: [PATCH] ilo: make ilo_render opaque It is not used outside the render code. There are also too many details in it that we do not want other components to access directly. Signed-off-by: Chia-I Wu --- src/gallium/drivers/ilo/ilo_render.c | 1 - src/gallium/drivers/ilo/ilo_render.h | 91 +------------------- src/gallium/drivers/ilo/ilo_render_dynamic.c | 1 - src/gallium/drivers/ilo/ilo_render_gen.h | 88 +++++++++++++++++++ src/gallium/drivers/ilo/ilo_render_gen6.c | 1 - src/gallium/drivers/ilo/ilo_render_gen7.c | 1 - src/gallium/drivers/ilo/ilo_render_surface.c | 1 - 7 files changed, 90 insertions(+), 94 deletions(-) diff --git a/src/gallium/drivers/ilo/ilo_render.c b/src/gallium/drivers/ilo/ilo_render.c index 2b8412a348f..9291855c129 100644 --- a/src/gallium/drivers/ilo/ilo_render.c +++ b/src/gallium/drivers/ilo/ilo_render.c @@ -34,7 +34,6 @@ #include "ilo_builder_render.h" #include "ilo_query.h" #include "ilo_render_gen.h" -#include "ilo_render.h" /* in U0.4 */ struct sample_position { diff --git a/src/gallium/drivers/ilo/ilo_render.h b/src/gallium/drivers/ilo/ilo_render.h index 60e3769e0dc..0cf1d0311b0 100644 --- a/src/gallium/drivers/ilo/ilo_render.h +++ b/src/gallium/drivers/ilo/ilo_render.h @@ -29,100 +29,13 @@ #define ILO_RENDER_H #include "ilo_common.h" -#include "ilo_state.h" -struct intel_bo; struct ilo_blitter; -struct ilo_cp; +struct ilo_builder; struct ilo_query; +struct ilo_render; struct ilo_state_vector; -/** - * 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]; - - 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); diff --git a/src/gallium/drivers/ilo/ilo_render_dynamic.c b/src/gallium/drivers/ilo/ilo_render_dynamic.c index 6f530ac99b2..fda50dc7c80 100644 --- a/src/gallium/drivers/ilo/ilo_render_dynamic.c +++ b/src/gallium/drivers/ilo/ilo_render_dynamic.c @@ -30,7 +30,6 @@ #include "ilo_builder_3d.h" #include "ilo_state.h" #include "ilo_render_gen.h" -#include "ilo_render.h" #define DIRTY(state) (session->pipe_dirty & ILO_DIRTY_ ## state) diff --git a/src/gallium/drivers/ilo/ilo_render_gen.h b/src/gallium/drivers/ilo/ilo_render_gen.h index ffddaa87f67..09c603dcbf4 100644 --- a/src/gallium/drivers/ilo/ilo_render_gen.h +++ b/src/gallium/drivers/ilo/ilo_render_gen.h @@ -30,12 +30,100 @@ #include "ilo_common.h" #include "ilo_builder.h" +#include "ilo_state.h" #include "ilo_render.h" +struct ilo_bo; struct ilo_blitter; struct ilo_render; struct ilo_state_vector; +/** + * 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]; + + 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 gen6_draw_session { uint32_t pipe_dirty; diff --git a/src/gallium/drivers/ilo/ilo_render_gen6.c b/src/gallium/drivers/ilo/ilo_render_gen6.c index f2b876cf046..b60075cb3c2 100644 --- a/src/gallium/drivers/ilo/ilo_render_gen6.c +++ b/src/gallium/drivers/ilo/ilo_render_gen6.c @@ -36,7 +36,6 @@ #include "ilo_query.h" #include "ilo_shader.h" #include "ilo_state.h" -#include "ilo_render.h" #include "ilo_render_gen.h" /** diff --git a/src/gallium/drivers/ilo/ilo_render_gen7.c b/src/gallium/drivers/ilo/ilo_render_gen7.c index 888d67810af..33e119aa932 100644 --- a/src/gallium/drivers/ilo/ilo_render_gen7.c +++ b/src/gallium/drivers/ilo/ilo_render_gen7.c @@ -33,7 +33,6 @@ #include "ilo_builder_render.h" #include "ilo_shader.h" #include "ilo_state.h" -#include "ilo_render.h" #include "ilo_render_gen.h" /** diff --git a/src/gallium/drivers/ilo/ilo_render_surface.c b/src/gallium/drivers/ilo/ilo_render_surface.c index 50d37289f93..bf5554bded7 100644 --- a/src/gallium/drivers/ilo/ilo_render_surface.c +++ b/src/gallium/drivers/ilo/ilo_render_surface.c @@ -30,7 +30,6 @@ #include "ilo_builder_3d.h" #include "ilo_state.h" #include "ilo_render_gen.h" -#include "ilo_render.h" #define DIRTY(state) (session->pipe_dirty & ILO_DIRTY_ ## state) -- 2.30.2