sna: Port IVB acceleration code (Xrender + Xv)
Based on the superlative work by Kenneth Graunke and Xiang, Haihao. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
1079092157
commit
326a84e832
|
|
@ -68,6 +68,8 @@ libsna_la_SOURCES = \
|
|||
gen5_render.h \
|
||||
gen6_render.c \
|
||||
gen6_render.h \
|
||||
gen7_render.c \
|
||||
gen7_render.h \
|
||||
$(NULL)
|
||||
|
||||
if DRI
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -240,6 +240,7 @@ struct sna {
|
|||
struct gen4_render_state gen4;
|
||||
struct gen5_render_state gen5;
|
||||
struct gen6_render_state gen6;
|
||||
struct gen7_render_state gen7;
|
||||
} render_state;
|
||||
uint32_t have_render;
|
||||
|
||||
|
|
|
|||
|
|
@ -3338,10 +3338,13 @@ Bool sna_accel_init(ScreenPtr screen, struct sna *sna)
|
|||
no_render_init(sna);
|
||||
|
||||
#if !DEBUG_NO_RENDER
|
||||
if (sna->chipset.info->gen >= 70) {
|
||||
if (sna->chipset.info->gen >= 80) {
|
||||
} else if (sna->chipset.info->gen >= 70) {
|
||||
if ((sna->have_render = gen7_render_init(sna)))
|
||||
backend = "IvyBridge";
|
||||
} else if (sna->chipset.info->gen >= 60) {
|
||||
if ((sna->have_render = gen6_render_init(sna)))
|
||||
backend = "Sandybridge";
|
||||
backend = "SandyBridge";
|
||||
} else if (sna->chipset.info->gen >= 50) {
|
||||
if ((sna->have_render = gen5_render_init(sna)))
|
||||
backend = "Ironlake";
|
||||
|
|
|
|||
|
|
@ -120,6 +120,13 @@ struct sna_composite_op {
|
|||
int ve_id;
|
||||
} gen6;
|
||||
|
||||
struct {
|
||||
int wm_kernel;
|
||||
int nr_surfaces;
|
||||
int nr_inputs;
|
||||
int ve_id;
|
||||
} gen7;
|
||||
|
||||
void *priv;
|
||||
} u;
|
||||
};
|
||||
|
|
@ -362,6 +369,53 @@ struct gen6_render_state {
|
|||
Bool needs_invariant;
|
||||
};
|
||||
|
||||
enum {
|
||||
GEN7_WM_KERNEL_NOMASK = 0,
|
||||
GEN7_WM_KERNEL_NOMASK_PROJECTIVE,
|
||||
|
||||
GEN7_WM_KERNEL_MASK,
|
||||
GEN7_WM_KERNEL_MASK_PROJECTIVE,
|
||||
|
||||
GEN7_WM_KERNEL_MASKCA,
|
||||
GEN7_WM_KERNEL_MASKCA_PROJECTIVE,
|
||||
|
||||
GEN7_WM_KERNEL_MASKCA_SRCALPHA,
|
||||
GEN7_WM_KERNEL_MASKCA_SRCALPHA_PROJECTIVE,
|
||||
|
||||
GEN7_WM_KERNEL_VIDEO_PLANAR,
|
||||
GEN7_WM_KERNEL_VIDEO_PACKED,
|
||||
GEN7_KERNEL_COUNT
|
||||
};
|
||||
|
||||
struct gen7_render_state {
|
||||
struct kgem_bo *general_bo;
|
||||
|
||||
uint32_t vs_state;
|
||||
uint32_t sf_state;
|
||||
uint32_t sf_mask_state;
|
||||
uint32_t wm_state;
|
||||
uint32_t wm_kernel[GEN6_KERNEL_COUNT];
|
||||
|
||||
uint32_t cc_vp;
|
||||
uint32_t cc_blend;
|
||||
|
||||
uint32_t drawrect_offset;
|
||||
uint32_t drawrect_limit;
|
||||
uint32_t blend;
|
||||
uint32_t samplers;
|
||||
uint32_t kernel;
|
||||
|
||||
uint16_t num_sf_outputs;
|
||||
uint16_t vb_id;
|
||||
uint16_t ve_id;
|
||||
uint16_t vertex_offset;
|
||||
uint16_t last_primitive;
|
||||
int16_t floats_per_vertex;
|
||||
uint16_t surface_table;
|
||||
|
||||
Bool needs_invariant;
|
||||
};
|
||||
|
||||
struct sna_static_stream {
|
||||
uint32_t size, used;
|
||||
uint8_t *data;
|
||||
|
|
@ -398,6 +452,7 @@ Bool gen3_render_init(struct sna *sna);
|
|||
Bool gen4_render_init(struct sna *sna);
|
||||
Bool gen5_render_init(struct sna *sna);
|
||||
Bool gen6_render_init(struct sna *sna);
|
||||
Bool gen7_render_init(struct sna *sna);
|
||||
|
||||
Bool sna_tiling_composite(struct sna *sna,
|
||||
uint32_t op,
|
||||
|
|
|
|||
Loading…
Reference in New Issue