X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Filo%2Filo_3d_pipeline.h;h=90c626e52744424a3b2437c9ed2394db021b97c5;hb=d2a3de19c6aa5881228734c73df706483a4aecf9;hp=496b85a13c24c19170863610660e1e47c8b85062;hpb=5b310f62300ecbb2549578cbcc36267083fdccea;p=mesa.git diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline.h b/src/gallium/drivers/ilo/ilo_3d_pipeline.h index 496b85a13c2..90c626e5274 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline.h +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline.h @@ -29,12 +29,10 @@ #define ILO_3D_PIPELINE_H #include "ilo_common.h" -#include "ilo_context.h" -#include "ilo_gpe_gen6.h" -#include "ilo_gpe_gen7.h" +#include "ilo_gpe.h" -struct pipe_draw_info; struct intel_bo; +struct ilo_blitter; struct ilo_cp; struct ilo_context; @@ -52,6 +50,8 @@ enum ilo_3d_pipeline_action { ILO_3D_PIPELINE_FLUSH, ILO_3D_PIPELINE_WRITE_TIMESTAMP, ILO_3D_PIPELINE_WRITE_DEPTH_COUNT, + ILO_3D_PIPELINE_WRITE_STATISTICS, + ILO_3D_PIPELINE_RECTLIST, }; /** @@ -59,9 +59,7 @@ enum ilo_3d_pipeline_action { */ struct ilo_3d_pipeline { struct ilo_cp *cp; - int gen; - - struct ilo_gpe gpe; + const struct ilo_dev_info *dev; uint32_t invalidate_flags; @@ -76,8 +74,7 @@ struct ilo_3d_pipeline { const void *arg); void (*emit_draw)(struct ilo_3d_pipeline *pipeline, - const struct ilo_context *ilo, - const struct pipe_draw_info *info); + const struct ilo_context *ilo); void (*emit_flush)(struct ilo_3d_pipeline *pipeline); @@ -87,105 +84,11 @@ struct ilo_3d_pipeline { void (*emit_write_depth_count)(struct ilo_3d_pipeline *pipeline, struct intel_bo *bo, int index); - /** - * all GPE functions of all GENs - */ -#define GEN6_EMIT(name) ilo_gpe_gen6_ ## name gen6_ ## name - GEN6_EMIT(STATE_BASE_ADDRESS); - GEN6_EMIT(STATE_SIP); - GEN6_EMIT(PIPELINE_SELECT); - GEN6_EMIT(3DSTATE_BINDING_TABLE_POINTERS); - GEN6_EMIT(3DSTATE_SAMPLER_STATE_POINTERS); - GEN6_EMIT(3DSTATE_URB); - GEN6_EMIT(3DSTATE_VERTEX_BUFFERS); - GEN6_EMIT(3DSTATE_VERTEX_ELEMENTS); - GEN6_EMIT(3DSTATE_INDEX_BUFFER); - GEN6_EMIT(3DSTATE_VF_STATISTICS); - GEN6_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS); - GEN6_EMIT(3DSTATE_CC_STATE_POINTERS); - GEN6_EMIT(3DSTATE_SCISSOR_STATE_POINTERS); - GEN6_EMIT(3DSTATE_VS); - GEN6_EMIT(3DSTATE_GS); - GEN6_EMIT(3DSTATE_CLIP); - GEN6_EMIT(3DSTATE_SF); - GEN6_EMIT(3DSTATE_WM); - GEN6_EMIT(3DSTATE_CONSTANT_VS); - GEN6_EMIT(3DSTATE_CONSTANT_GS); - GEN6_EMIT(3DSTATE_CONSTANT_PS); - GEN6_EMIT(3DSTATE_SAMPLE_MASK); - GEN6_EMIT(3DSTATE_DRAWING_RECTANGLE); - GEN6_EMIT(3DSTATE_DEPTH_BUFFER); - GEN6_EMIT(3DSTATE_POLY_STIPPLE_OFFSET); - GEN6_EMIT(3DSTATE_POLY_STIPPLE_PATTERN); - GEN6_EMIT(3DSTATE_LINE_STIPPLE); - GEN6_EMIT(3DSTATE_AA_LINE_PARAMETERS); - GEN6_EMIT(3DSTATE_GS_SVB_INDEX); - GEN6_EMIT(3DSTATE_MULTISAMPLE); - GEN6_EMIT(3DSTATE_STENCIL_BUFFER); - GEN6_EMIT(3DSTATE_HIER_DEPTH_BUFFER); - GEN6_EMIT(3DSTATE_CLEAR_PARAMS); - GEN6_EMIT(PIPE_CONTROL); - GEN6_EMIT(3DPRIMITIVE); - GEN6_EMIT(INTERFACE_DESCRIPTOR_DATA); - GEN6_EMIT(SF_VIEWPORT); - GEN6_EMIT(CLIP_VIEWPORT); - GEN6_EMIT(CC_VIEWPORT); - GEN6_EMIT(COLOR_CALC_STATE); - GEN6_EMIT(BLEND_STATE); - GEN6_EMIT(DEPTH_STENCIL_STATE); - GEN6_EMIT(SCISSOR_RECT); - GEN6_EMIT(BINDING_TABLE_STATE); - GEN6_EMIT(surf_SURFACE_STATE); - GEN6_EMIT(view_SURFACE_STATE); - GEN6_EMIT(cbuf_SURFACE_STATE); - GEN6_EMIT(so_SURFACE_STATE); - GEN6_EMIT(SAMPLER_STATE); - GEN6_EMIT(SAMPLER_BORDER_COLOR_STATE); - GEN6_EMIT(push_constant_buffer); -#undef GEN6_EMIT - -#define GEN7_EMIT(name) ilo_gpe_gen7_ ## name gen7_ ## name - GEN7_EMIT(3DSTATE_DEPTH_BUFFER); - GEN7_EMIT(3DSTATE_CC_STATE_POINTERS); - GEN7_EMIT(3DSTATE_GS); - GEN7_EMIT(3DSTATE_SF); - GEN7_EMIT(3DSTATE_WM); - GEN7_EMIT(3DSTATE_SAMPLE_MASK); - GEN7_EMIT(3DSTATE_CONSTANT_HS); - GEN7_EMIT(3DSTATE_CONSTANT_DS); - GEN7_EMIT(3DSTATE_HS); - GEN7_EMIT(3DSTATE_TE); - GEN7_EMIT(3DSTATE_DS); - GEN7_EMIT(3DSTATE_STREAMOUT); - GEN7_EMIT(3DSTATE_SBE); - GEN7_EMIT(3DSTATE_PS); - GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP); - GEN7_EMIT(3DSTATE_VIEWPORT_STATE_POINTERS_CC); - GEN7_EMIT(3DSTATE_BLEND_STATE_POINTERS); - GEN7_EMIT(3DSTATE_DEPTH_STENCIL_STATE_POINTERS); - GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_VS); - GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_HS); - GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_DS); - GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_GS); - GEN7_EMIT(3DSTATE_BINDING_TABLE_POINTERS_PS); - GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_VS); - GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_HS); - GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_DS); - GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_GS); - GEN7_EMIT(3DSTATE_SAMPLER_STATE_POINTERS_PS); - GEN7_EMIT(3DSTATE_URB_VS); - GEN7_EMIT(3DSTATE_URB_HS); - GEN7_EMIT(3DSTATE_URB_DS); - GEN7_EMIT(3DSTATE_URB_GS); - GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_VS); - GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_HS); - GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_DS); - GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_GS); - GEN7_EMIT(3DSTATE_PUSH_CONSTANT_ALLOC_PS); - GEN7_EMIT(3DSTATE_SO_DECL_LIST); - GEN7_EMIT(3DSTATE_SO_BUFFER); - GEN7_EMIT(SF_CLIP_VIEWPORT); -#undef GEN7_EMIT + void (*emit_write_statistics)(struct ilo_3d_pipeline *pipeline, + struct intel_bo *bo, int index); + + void (*emit_rectlist)(struct ilo_3d_pipeline *pipeline, + const struct ilo_blitter *blitter); /** * HW states. @@ -193,6 +96,7 @@ struct ilo_3d_pipeline { struct ilo_3d_pipeline_state { bool has_gen6_wa_pipe_control; + bool primitive_restart; int reduced_prim; int so_num_vertices, so_max_vertices; @@ -230,12 +134,14 @@ struct ilo_3d_pipeline { 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_3d_pipeline * -ilo_3d_pipeline_create(struct ilo_cp *cp, int gen, int gt); +ilo_3d_pipeline_create(struct ilo_cp *cp, const struct ilo_dev_info *dev); void ilo_3d_pipeline_destroy(struct ilo_3d_pipeline *pipeline); @@ -261,7 +167,6 @@ ilo_3d_pipeline_estimate_size(struct ilo_3d_pipeline *pipeline, bool ilo_3d_pipeline_emit_draw(struct ilo_3d_pipeline *p, const struct ilo_context *ilo, - const struct pipe_draw_info *info, int *prim_generated, int *prim_emitted); void @@ -275,6 +180,14 @@ void ilo_3d_pipeline_emit_write_depth_count(struct ilo_3d_pipeline *p, struct intel_bo *bo, int index); +void +ilo_3d_pipeline_emit_write_statistics(struct ilo_3d_pipeline *p, + struct intel_bo *bo, int index); + +void +ilo_3d_pipeline_emit_rectlist(struct ilo_3d_pipeline *p, + const struct ilo_blitter *blitter); + void ilo_3d_pipeline_get_sample_position(struct ilo_3d_pipeline *p, unsigned sample_count,