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 <olvaffe@gmail.com>
This commit is contained in:
Chia-I Wu 2014-09-25 16:41:31 +08:00
parent 8f284343e0
commit 4be7b7ee85
7 changed files with 90 additions and 94 deletions

View file

@ -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 {

View file

@ -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);

View file

@ -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)

View file

@ -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;

View file

@ -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"
/**

View file

@ -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"
/**

View file

@ -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)