Path: blob/21.2-virgl/src/gallium/drivers/llvmpipe/lp_limits.h
4570 views
/**************************************************************************1*2* Copyright 2010 VMware, Inc.3* All Rights Reserved.4*5* Permission is hereby granted, free of charge, to any person obtaining a6* copy of this software and associated documentation files (the7* "Software"), to deal in the Software without restriction, including8* without limitation the rights to use, copy, modify, merge, publish,9* distribute, sub license, and/or sell copies of the Software, and to10* permit persons to whom the Software is furnished to do so, subject to11* the following conditions:12*13* The above copyright notice and this permission notice (including the14* next paragraph) shall be included in all copies or substantial portions15* of the Software.16*17* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS18* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.20* IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR21* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,22* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE23* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.24*25**************************************************************************/2627/**28* Implementation limits for LLVMpipe driver.29*/3031#ifndef LP_LIMITS_H32#define LP_LIMITS_H333435/**36* Tile size (width and height). This needs to be a power of two.37*/38#define TILE_ORDER 639#define TILE_SIZE (1 << TILE_ORDER)404142/**43* Max texture sizes44*/45/**46* 2GB is the actual max currently (we always use 32bit offsets, and both47* llvm GEP as well as avx2 gather use signed offsets).48*/49#define LP_MAX_TEXTURE_SIZE (2 * 1024 * 1024 * 1024ULL)50#define LP_MAX_TEXTURE_2D_LEVELS 15 /* 16K x 16K for now */51#define LP_MAX_TEXTURE_3D_LEVELS 12 /* 2K x 2K x 2K for now */52#define LP_MAX_TEXTURE_CUBE_LEVELS 15 /* 16K x 16K for now */53#define LP_MAX_TEXTURE_ARRAY_LAYERS 2048 /* 16K x 2048 / 16K x 16K x 2048 */545556/** This must be the larger of LP_MAX_TEXTURE_2D/3D_LEVELS */57#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS585960/**61* Max drawing surface size is the max texture size62*/63#define LP_MAX_HEIGHT (1 << (LP_MAX_TEXTURE_LEVELS - 1))64#define LP_MAX_WIDTH (1 << (LP_MAX_TEXTURE_LEVELS - 1))6566#define LP_MAX_SAMPLES 46768#define LP_MAX_THREADS 16697071/**72* Max bytes per scene. This may be replaced by a runtime parameter.73*/74#define LP_MAX_SCENE_SIZE (512 * 1024 * 1024)7576/**77* Max number of shader variants (for all shaders combined,78* per context) that will be kept around.79*/80#define LP_MAX_SHADER_VARIANTS 10248182/**83* Max number of instructions (for all fragment shaders combined per context)84* that will be kept around (counted in terms of llvm ir).85*/86#define LP_MAX_SHADER_INSTRUCTIONS (2048 * LP_MAX_SHADER_VARIANTS)8788/**89* Max number of setup variants that will be kept around.90*91* These are determined by the combination of the fragment shader92* input signature and a small amount of rasterization state (eg93* flatshading). It is likely that many active fragment shaders will94* share the same setup variant.95*/96#define LP_MAX_SETUP_VARIANTS 649798/*99* Max point size reported. Cap vertex shader point sizes to this.100*/101#define LP_MAX_POINT_WIDTH 255.0f102#endif /* LP_LIMITS_H */103104105