mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
ilo: make ilo_render_emit_rectlist() direct
Remove emit_rectlist() and ILO_RENDER_RECTLIST indirections. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
This commit is contained in:
parent
362d2fb982
commit
a05ce904aa
6 changed files with 84 additions and 53 deletions
|
|
@ -375,8 +375,7 @@ ilo_draw_rectlist(struct ilo_context *ilo)
|
|||
|
||||
ilo_draw_set_owner(ilo);
|
||||
|
||||
max_len = ilo_render_estimate_size(ilo->render,
|
||||
ILO_RENDER_RECTLIST, ilo->blitter);
|
||||
max_len = ilo_render_get_rectlist_len(ilo->render, ilo->blitter);
|
||||
max_len += ilo_render_get_flush_len(ilo->render) * 2;
|
||||
|
||||
if (max_len > ilo_cp_space(ilo->cp)) {
|
||||
|
|
|
|||
|
|
@ -368,3 +368,23 @@ ilo_render_emit_query(struct ilo_render *render,
|
|||
assert(ilo_builder_batch_used(render->builder) <= batch_used +
|
||||
ilo_render_get_query_len(render, q->type));
|
||||
}
|
||||
|
||||
int
|
||||
ilo_render_get_rectlist_len(const struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ILO_DEV_ASSERT(render->dev, 6, 7.5);
|
||||
|
||||
return ilo_render_get_rectlist_dynamic_states_len(render, blitter) +
|
||||
ilo_render_get_rectlist_commands_len(render, blitter);
|
||||
}
|
||||
|
||||
void
|
||||
ilo_render_emit_rectlist(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ILO_DEV_ASSERT(render->dev, 6, 7.5);
|
||||
|
||||
ilo_render_emit_rectlist_dynamic_states(render, blitter);
|
||||
ilo_render_emit_rectlist_commands(render, blitter);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ struct ilo_state_vector;
|
|||
|
||||
enum ilo_render_action {
|
||||
ILO_RENDER_DRAW,
|
||||
ILO_RENDER_RECTLIST,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -62,9 +61,6 @@ struct ilo_render {
|
|||
void (*emit_draw)(struct ilo_render *render,
|
||||
const struct ilo_state_vector *vec);
|
||||
|
||||
void (*emit_rectlist)(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
bool hw_ctx_changed;
|
||||
|
||||
/*
|
||||
|
|
@ -165,13 +161,6 @@ ilo_render_emit_draw(struct ilo_render *render,
|
|||
render->emit_draw(render, vec);
|
||||
}
|
||||
|
||||
static inline void
|
||||
ilo_render_emit_rectlist(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
render->emit_rectlist(render, blitter);
|
||||
}
|
||||
|
||||
void
|
||||
ilo_render_get_sample_position(const struct ilo_render *render,
|
||||
unsigned sample_count,
|
||||
|
|
@ -198,4 +187,12 @@ void
|
|||
ilo_render_emit_query(struct ilo_render *render,
|
||||
struct ilo_query *q, uint32_t offset);
|
||||
|
||||
int
|
||||
ilo_render_get_rectlist_len(const struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
void
|
||||
ilo_render_emit_rectlist(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
#endif /* ILO_RENDER_H */
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
#define ILO_RENDER_GEN_H
|
||||
|
||||
#include "ilo_common.h"
|
||||
#include "ilo_builder.h"
|
||||
#include "ilo_render.h"
|
||||
|
||||
struct ilo_blitter;
|
||||
struct ilo_render;
|
||||
|
|
@ -71,6 +73,40 @@ struct gen6_draw_session {
|
|||
int num_surfaces[PIPE_SHADER_TYPES];
|
||||
};
|
||||
|
||||
int
|
||||
ilo_render_get_rectlist_commands_len_gen6(const struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
static inline int
|
||||
ilo_render_get_rectlist_commands_len(const struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
return ilo_render_get_rectlist_commands_len_gen6(render, blitter);
|
||||
}
|
||||
|
||||
void
|
||||
ilo_render_emit_rectlist_commands_gen6(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
void
|
||||
ilo_render_emit_rectlist_commands_gen7(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter);
|
||||
|
||||
static inline void
|
||||
ilo_render_emit_rectlist_commands(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
const unsigned batch_used = ilo_builder_batch_used(render->builder);
|
||||
|
||||
if (ilo_dev_gen(render->dev) >= ILO_GEN(7))
|
||||
ilo_render_emit_rectlist_commands_gen7(render, blitter);
|
||||
else
|
||||
ilo_render_emit_rectlist_commands_gen6(render, blitter);
|
||||
|
||||
assert(ilo_builder_batch_used(render->builder) <= batch_used +
|
||||
ilo_render_get_rectlist_commands_len(render, blitter));
|
||||
}
|
||||
|
||||
int
|
||||
ilo_render_get_draw_dynamic_states_len(const struct ilo_render *render,
|
||||
const struct ilo_state_vector *vec);
|
||||
|
|
|
|||
|
|
@ -1028,10 +1028,21 @@ gen6_rectlist_wm_multisample(struct ilo_render *r,
|
|||
(1 << blitter->fb.num_samples) - 1);
|
||||
}
|
||||
|
||||
static void
|
||||
gen6_rectlist_commands(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter)
|
||||
int
|
||||
ilo_render_get_rectlist_commands_len_gen6(const struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ILO_DEV_ASSERT(render->dev, 6, 7.5);
|
||||
|
||||
return 256;
|
||||
}
|
||||
|
||||
void
|
||||
ilo_render_emit_rectlist_commands_gen6(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ILO_DEV_ASSERT(r->dev, 6, 6);
|
||||
|
||||
gen6_wa_pre_non_pipelined(r);
|
||||
|
||||
gen6_rectlist_wm_multisample(r, blitter);
|
||||
|
|
@ -1074,14 +1085,6 @@ gen6_rectlist_commands(struct ilo_render *r,
|
|||
gen6_3DPRIMITIVE(r->builder, &blitter->draw, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
ilo_render_emit_rectlist_gen6(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ilo_render_emit_rectlist_dynamic_states(render, blitter);
|
||||
gen6_rectlist_commands(render, blitter);
|
||||
}
|
||||
|
||||
static int
|
||||
gen6_render_max_command_size(const struct ilo_render *render)
|
||||
{
|
||||
|
|
@ -1145,14 +1148,6 @@ ilo_render_estimate_size_gen6(struct ilo_render *render,
|
|||
ilo_render_get_draw_surface_states_len(render, vec);
|
||||
}
|
||||
break;
|
||||
case ILO_RENDER_RECTLIST:
|
||||
{
|
||||
const struct ilo_blitter *blitter = arg;
|
||||
|
||||
size = ilo_render_get_rectlist_dynamic_states_len(render, blitter);
|
||||
size += 256; /* commands */
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(!"unknown render action");
|
||||
size = 0;
|
||||
|
|
@ -1167,5 +1162,4 @@ ilo_render_init_gen6(struct ilo_render *render)
|
|||
{
|
||||
render->estimate_size = ilo_render_estimate_size_gen6;
|
||||
render->emit_draw = ilo_render_emit_draw_gen6;
|
||||
render->emit_rectlist = ilo_render_emit_rectlist_gen6;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -838,10 +838,12 @@ gen7_rectlist_wm_multisample(struct ilo_render *r,
|
|||
(1 << blitter->fb.num_samples) - 1, blitter->fb.num_samples);
|
||||
}
|
||||
|
||||
static void
|
||||
gen7_rectlist_commands(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter)
|
||||
void
|
||||
ilo_render_emit_rectlist_commands_gen7(struct ilo_render *r,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ILO_DEV_ASSERT(r->dev, 7, 7.5);
|
||||
|
||||
gen7_rectlist_wm_multisample(r, blitter);
|
||||
|
||||
gen6_state_base_address(r->builder, true);
|
||||
|
|
@ -885,14 +887,6 @@ gen7_rectlist_commands(struct ilo_render *r,
|
|||
gen7_3DPRIMITIVE(r->builder, &blitter->draw, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
ilo_render_emit_rectlist_gen7(struct ilo_render *render,
|
||||
const struct ilo_blitter *blitter)
|
||||
{
|
||||
ilo_render_emit_rectlist_dynamic_states(render, blitter);
|
||||
gen7_rectlist_commands(render, blitter);
|
||||
}
|
||||
|
||||
static int
|
||||
gen7_render_max_command_size(const struct ilo_render *render)
|
||||
{
|
||||
|
|
@ -961,14 +955,6 @@ ilo_render_estimate_size_gen7(struct ilo_render *render,
|
|||
ilo_render_get_draw_surface_states_len(render, vec);
|
||||
}
|
||||
break;
|
||||
case ILO_RENDER_RECTLIST:
|
||||
{
|
||||
const struct ilo_blitter *blitter = arg;
|
||||
|
||||
size = ilo_render_get_rectlist_dynamic_states_len(render, blitter);
|
||||
size += 256; /* commands */
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(!"unknown render action");
|
||||
size = 0;
|
||||
|
|
@ -983,5 +969,4 @@ ilo_render_init_gen7(struct ilo_render *render)
|
|||
{
|
||||
render->estimate_size = ilo_render_estimate_size_gen7;
|
||||
render->emit_draw = ilo_render_emit_draw_gen7;
|
||||
render->emit_rectlist = ilo_render_emit_rectlist_gen7;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue