17faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez/************************************************************************** 27faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * 37faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * Copyright 2011 The Chromium OS authors. 47faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * All Rights Reserved. 57faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * 67faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * Permission is hereby granted, free of charge, to any person obtaining a 77faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * copy of this software and associated documentation files (the 87faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * "Software"), to deal in the Software without restriction, including 97faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * without limitation the rights to use, copy, modify, merge, publish, 107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * distribute, sub license, and/or sell copies of the Software, and to 117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * permit persons to whom the Software is furnished to do so, subject to 127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * the following conditions: 137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * 147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * The above copyright notice and this permission notice (including the 157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * next paragraph) shall be included in all copies or substantial portions 167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * of the Software. 177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * 187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * IN NO EVENT SHALL GOOGLE AND/OR ITS SUPPLIERS BE LIABLE FOR 227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez * 267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez **************************************************************************/ 277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez/* Fake occlusion queries which return 0, it's better than crashing */ 297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez#include "pipe/p_compiler.h" 317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez#include "util/u_memory.h" 337faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 347faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez#include "i915_context.h" 357faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez#include "i915_query.h" 367faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 377faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstruct i915_query 387faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 397faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez unsigned query; 407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez}; 417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstatic struct pipe_query *i915_create_query(struct pipe_context *ctx, 437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez unsigned query_type) 447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez struct i915_query *query = CALLOC_STRUCT( i915_query ); 467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez return (struct pipe_query *)query; 487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstatic void i915_destroy_query(struct pipe_context *ctx, 517faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez struct pipe_query *query) 527faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 537faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez FREE(query); 547faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 557faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 567faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstatic void i915_begin_query(struct pipe_context *ctx, 577faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez struct pipe_query *query) 587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstatic void i915_end_query(struct pipe_context *ctx, struct pipe_query *query) 627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 637faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 647faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 657faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezstatic boolean i915_get_query_result(struct pipe_context *ctx, 667faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez struct pipe_query *query, 677faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez boolean wait, 687faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez union pipe_query_result *vresult) 697faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 707faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez uint64_t *result = (uint64_t*)vresult; 717faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 727faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez /* 2* viewport Max */ 737faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez *result = 512*1024*1024; 747faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez return TRUE; 757faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 767faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 777faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezvoid 787faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandezi915_init_query_functions(struct i915_context *i915) 797faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez{ 807faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez i915->base.create_query = i915_create_query; 817faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez i915->base.destroy_query = i915_destroy_query; 827faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez i915->base.begin_query = i915_begin_query; 837faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez i915->base.end_query = i915_end_query; 847faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez i915->base.get_query_result = i915_get_query_result; 857faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} 867faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 877faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez