mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-11 08:00:13 +01:00
r300g: debug option for fake occlusion queries
This commit is contained in:
parent
4320a451a3
commit
3c351e2c83
3 changed files with 59 additions and 7 deletions
|
|
@ -38,6 +38,7 @@ static const struct debug_named_value debug_options[] = {
|
|||
{ "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" },
|
||||
{ "notiling", DBG_NO_TILING, "Disable tiling (for benchmarking)" },
|
||||
{ "noimmd", DBG_NO_IMMD, "Disable immediate mode (for benchmarking)" },
|
||||
{ "fakeocc", DBG_FAKE_OCC, "Use fake occlusion queries (for lulz)" },
|
||||
{ "stats", DBG_STATS, "Gather statistics (for lulz)" },
|
||||
|
||||
/* must be last */
|
||||
|
|
|
|||
|
|
@ -171,11 +171,61 @@ static void r300_render_condition(struct pipe_context *pipe,
|
|||
}
|
||||
}
|
||||
|
||||
void r300_init_query_functions(struct r300_context* r300) {
|
||||
r300->context.create_query = r300_create_query;
|
||||
r300->context.destroy_query = r300_destroy_query;
|
||||
r300->context.begin_query = r300_begin_query;
|
||||
r300->context.end_query = r300_end_query;
|
||||
r300->context.get_query_result = r300_get_query_result;
|
||||
r300->context.render_condition = r300_render_condition;
|
||||
/***************************************************************************
|
||||
* Fake occlusion queries (for debugging)
|
||||
***************************************************************************/
|
||||
|
||||
static unsigned r300_fake_query;
|
||||
|
||||
static struct pipe_query *r300_fake_create_query(struct pipe_context *pipe,
|
||||
unsigned query_type)
|
||||
{
|
||||
return (struct pipe_query*)&r300_fake_query;
|
||||
}
|
||||
|
||||
static void r300_fake_destroy_query(struct pipe_context* pipe,
|
||||
struct pipe_query* query)
|
||||
{
|
||||
}
|
||||
|
||||
static void r300_fake_begin_query(struct pipe_context* pipe,
|
||||
struct pipe_query* query)
|
||||
{
|
||||
}
|
||||
|
||||
static void r300_fake_end_query(struct pipe_context* pipe,
|
||||
struct pipe_query* query)
|
||||
{
|
||||
}
|
||||
|
||||
static boolean r300_fake_get_query_result(struct pipe_context* pipe,
|
||||
struct pipe_query* query,
|
||||
boolean wait, void* vresult)
|
||||
{
|
||||
uint64_t *result = (uint64_t*)vresult;
|
||||
*result = 1000000;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void r300_fake_render_condition(struct pipe_context *pipe,
|
||||
struct pipe_query *query, uint mode)
|
||||
{
|
||||
}
|
||||
|
||||
void r300_init_query_functions(struct r300_context* r300) {
|
||||
if (DBG_ON(r300, DBG_FAKE_OCC)) {
|
||||
r300->context.create_query = r300_fake_create_query;
|
||||
r300->context.destroy_query = r300_fake_destroy_query;
|
||||
r300->context.begin_query = r300_fake_begin_query;
|
||||
r300->context.end_query = r300_fake_end_query;
|
||||
r300->context.get_query_result = r300_fake_get_query_result;
|
||||
r300->context.render_condition = r300_fake_render_condition;
|
||||
} else {
|
||||
r300->context.create_query = r300_create_query;
|
||||
r300->context.destroy_query = r300_destroy_query;
|
||||
r300->context.begin_query = r300_begin_query;
|
||||
r300->context.end_query = r300_end_query;
|
||||
r300->context.get_query_result = r300_get_query_result;
|
||||
r300->context.render_condition = r300_render_condition;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
|
|||
#define DBG_ANISOHQ (1 << 16)
|
||||
#define DBG_NO_TILING (1 << 17)
|
||||
#define DBG_NO_IMMD (1 << 18)
|
||||
#define DBG_FAKE_OCC (1 << 19)
|
||||
/* Statistics. */
|
||||
#define DBG_STATS (1 << 24)
|
||||
/*@}*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue