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=3ed3304400557798d6d144a3177bf4daf23e7e1d;hpb=91ce766c35ebb3ed964e373253178b9b99040f03;p=mesa.git diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline.h b/src/gallium/drivers/ilo/ilo_3d_pipeline.h index 3ed33044005..90c626e5274 100644 --- a/src/gallium/drivers/ilo/ilo_3d_pipeline.h +++ b/src/gallium/drivers/ilo/ilo_3d_pipeline.h @@ -29,11 +29,10 @@ #define ILO_3D_PIPELINE_H #include "ilo_common.h" -#include "ilo_context.h" -#include "ilo_gpe_gen6.h" +#include "ilo_gpe.h" -struct pipe_draw_info; struct intel_bo; +struct ilo_blitter; struct ilo_cp; struct ilo_context; @@ -51,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, }; /** @@ -58,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; @@ -75,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); @@ -86,62 +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 + 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. @@ -149,11 +96,13 @@ 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; uint32_t SF_VIEWPORT; uint32_t CLIP_VIEWPORT; + uint32_t SF_CLIP_VIEWPORT; /* GEN7+ */ uint32_t CC_VIEWPORT; uint32_t COLOR_CALC_STATE; @@ -185,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); @@ -216,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 @@ -230,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,