|
|
@@ -171,11 +171,61 @@ static void r300_render_condition(struct pipe_context *pipe, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************** |
|
|
|
* 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) { |
|
|
|
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; |
|
|
|
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; |
|
|
|
} |
|
|
|
} |