i915g: add fake occlusion queries.
Those always return 0, but at least we don't crash when exposing GL 2.0.
This commit is contained in:
parent
3a7953910a
commit
7b44830ef4
|
@ -21,6 +21,7 @@ C_SOURCES = \
|
|||
i915_screen.c \
|
||||
i915_prim_emit.c \
|
||||
i915_prim_vbuf.c \
|
||||
i915_query.c \
|
||||
i915_resource.c \
|
||||
i915_resource_texture.c \
|
||||
i915_resource_buffer.c \
|
||||
|
|
|
@ -16,6 +16,7 @@ i915 = env.ConvenienceLibrary(
|
|||
'i915_fpc_translate.c',
|
||||
'i915_prim_emit.c',
|
||||
'i915_prim_vbuf.c',
|
||||
'i915_query.c',
|
||||
'i915_screen.c',
|
||||
'i915_state.c',
|
||||
'i915_state_derived.c',
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "i915_state.h"
|
||||
#include "i915_screen.h"
|
||||
#include "i915_surface.h"
|
||||
#include "i915_query.h"
|
||||
#include "i915_batch.h"
|
||||
#include "i915_resource.h"
|
||||
|
||||
|
@ -172,6 +173,7 @@ i915_create_context(struct pipe_screen *screen, void *priv)
|
|||
i915_init_state_functions(i915);
|
||||
i915_init_flush_functions(i915);
|
||||
i915_init_resource_functions(i915);
|
||||
i915_init_query_functions(i915);
|
||||
|
||||
draw_install_aaline_stage(i915->draw, &i915->base);
|
||||
draw_install_aapoint_stage(i915->draw, &i915->base);
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2011 The Chromium OS authors.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL GOOGLE AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/* Fake occlusion queries which return 0, it's better than crashing */
|
||||
|
||||
#include "pipe/p_compiler.h"
|
||||
|
||||
#include "util/u_memory.h"
|
||||
|
||||
#include "i915_context.h"
|
||||
#include "i915_query.h"
|
||||
|
||||
struct i915_query
|
||||
{
|
||||
unsigned query;
|
||||
};
|
||||
|
||||
static struct pipe_query *i915_create_query(struct pipe_context *ctx,
|
||||
unsigned query_type)
|
||||
{
|
||||
struct i915_query *query = CALLOC_STRUCT( i915_query );
|
||||
|
||||
return (struct pipe_query *)query;
|
||||
}
|
||||
|
||||
static void i915_destroy_query(struct pipe_context *ctx,
|
||||
struct pipe_query *query)
|
||||
{
|
||||
FREE(query);
|
||||
}
|
||||
|
||||
static void i915_begin_query(struct pipe_context *ctx,
|
||||
struct pipe_query *query)
|
||||
{
|
||||
}
|
||||
|
||||
static void i915_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||
{
|
||||
}
|
||||
|
||||
static boolean i915_get_query_result(struct pipe_context *ctx,
|
||||
struct pipe_query *query,
|
||||
boolean wait,
|
||||
void *vresult)
|
||||
{
|
||||
uint64_t *result = (uint64_t*)vresult;
|
||||
|
||||
*result = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
i915_init_query_functions(struct i915_context *i915)
|
||||
{
|
||||
i915->base.create_query = i915_create_query;
|
||||
i915->base.destroy_query = i915_destroy_query;
|
||||
i915->base.begin_query = i915_begin_query;
|
||||
i915->base.end_query = i915_end_query;
|
||||
i915->base.get_query_result = i915_get_query_result;
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2011 The Chromium OS authors.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL GOOGLE AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef I915_QUERY_H
|
||||
#define I915_QUERY_H
|
||||
|
||||
struct i915_context;
|
||||
struct pipe_context;
|
||||
|
||||
void i915_init_query_functions( struct i915_context *i915 );
|
||||
|
||||
#endif /* I915_QUERY_H */
|
Loading…
Reference in New Issue