sna/gen9: Quick and dirty implementation
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
ff0ab2c2ea
commit
4e172a38e1
|
|
@ -107,6 +107,8 @@ libsna_la_SOURCES = \
|
|||
gen8_render.h \
|
||||
gen8_vertex.c \
|
||||
gen8_vertex.h \
|
||||
gen9_render.c \
|
||||
gen9_render.h \
|
||||
xassert.h \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -406,6 +406,7 @@ struct sna {
|
|||
struct gen6_render_state gen6;
|
||||
struct gen7_render_state gen7;
|
||||
struct gen8_render_state gen8;
|
||||
struct gen9_render_state gen9;
|
||||
} render_state;
|
||||
|
||||
/* Broken-out options. */
|
||||
|
|
|
|||
|
|
@ -18015,8 +18015,7 @@ static bool sna_option_accel_blt(struct sna *sna)
|
|||
{
|
||||
const char *s;
|
||||
|
||||
if (sna->kgem.gen >= 0110)
|
||||
return true;
|
||||
assert(sna->kgem.gen < 0120);
|
||||
|
||||
s = xf86GetOptValString(sna->Options, OPTION_ACCEL_METHOD);
|
||||
if (s == NULL)
|
||||
|
|
@ -18108,6 +18107,8 @@ bool sna_accel_init(ScreenPtr screen, struct sna *sna)
|
|||
sna_render_mark_wedged(sna);
|
||||
} else if (sna_option_accel_blt(sna))
|
||||
(void)backend;
|
||||
else if (sna->kgem.gen >= 0110)
|
||||
backend = gen9_render_init(sna, backend);
|
||||
else if (sna->kgem.gen >= 0100)
|
||||
backend = gen8_render_init(sna, backend);
|
||||
else if (sna->kgem.gen >= 070)
|
||||
|
|
|
|||
|
|
@ -148,6 +148,10 @@ struct sna_composite_op {
|
|||
struct {
|
||||
uint32_t flags;
|
||||
} gen8;
|
||||
|
||||
struct {
|
||||
uint32_t flags;
|
||||
} gen9;
|
||||
} u;
|
||||
|
||||
void *priv;
|
||||
|
|
@ -570,6 +574,57 @@ struct gen8_render_state {
|
|||
bool emit_flush;
|
||||
};
|
||||
|
||||
enum {
|
||||
GEN9_WM_KERNEL_NOMASK = 0,
|
||||
GEN9_WM_KERNEL_NOMASK_P,
|
||||
|
||||
GEN9_WM_KERNEL_MASK,
|
||||
GEN9_WM_KERNEL_MASK_P,
|
||||
|
||||
GEN9_WM_KERNEL_MASKCA,
|
||||
GEN9_WM_KERNEL_MASKCA_P,
|
||||
|
||||
GEN9_WM_KERNEL_MASKSA,
|
||||
GEN9_WM_KERNEL_MASKSA_P,
|
||||
|
||||
GEN9_WM_KERNEL_OPACITY,
|
||||
GEN9_WM_KERNEL_OPACITY_P,
|
||||
|
||||
GEN9_WM_KERNEL_VIDEO_PLANAR,
|
||||
GEN9_WM_KERNEL_VIDEO_PACKED,
|
||||
GEN9_WM_KERNEL_VIDEO_RGB,
|
||||
GEN9_WM_KERNEL_COUNT
|
||||
};
|
||||
|
||||
struct gen9_render_state {
|
||||
unsigned gt;
|
||||
const struct gt_info *info;
|
||||
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[GEN9_WM_KERNEL_COUNT][3];
|
||||
|
||||
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 ve_id;
|
||||
uint16_t last_primitive;
|
||||
int16_t floats_per_vertex;
|
||||
uint16_t surface_table;
|
||||
|
||||
bool needs_invariant;
|
||||
bool emit_flush;
|
||||
};
|
||||
|
||||
struct sna_static_stream {
|
||||
uint32_t size, used;
|
||||
uint8_t *data;
|
||||
|
|
@ -625,6 +680,7 @@ const char *gen5_render_init(struct sna *sna, const char *backend);
|
|||
const char *gen6_render_init(struct sna *sna, const char *backend);
|
||||
const char *gen7_render_init(struct sna *sna, const char *backend);
|
||||
const char *gen8_render_init(struct sna *sna, const char *backend);
|
||||
const char *gen9_render_init(struct sna *sna, const char *backend);
|
||||
|
||||
void sna_render_mark_wedged(struct sna *sna);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue