Module Name: xsrc Committed By: snj Date: Fri Jan 16 22:27:25 UTC 2015
Modified Files: xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm [netbsd-7]: lp_bld_limits.h Log Message: Pull up following revision(s) (requested by mrg in ticket #381): external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h: revision 1.1.1.2 "Make xsrc/external/mit/MesaLib/ match -current" - i.e. import mesa 10.3.5 (this file was somehow missed) To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r1.1.1.1.2.1 \ xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h diff -u xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h:1.1.1.1 xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h:1.1.1.1.2.1 --- xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h:1.1.1.1 Wed Jul 9 19:39:01 2014 +++ xsrc/external/mit/MesaLib/dist/src/gallium/auxiliary/gallivm/lp_bld_limits.h Fri Jan 16 22:27:25 2015 @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2010 VMware, Inc. + * Copyright 2010-2012 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -29,6 +29,13 @@ #ifndef LP_BLD_LIMITS_H_ #define LP_BLD_LIMITS_H_ + +#include <limits.h> + +#include "pipe/p_state.h" +#include "pipe/p_defines.h" + + /* * TGSI translation limits. * @@ -36,20 +43,95 @@ * the state trackers. */ -#define LP_MAX_TGSI_TEMPS 256 +#define LP_MAX_TGSI_TEMPS 4096 #define LP_MAX_TGSI_ADDRS 16 -#define LP_MAX_TGSI_IMMEDIATES 256 +#define LP_MAX_TGSI_IMMEDIATES 4096 #define LP_MAX_TGSI_PREDS 16 +#define LP_MAX_TGSI_CONST_BUFFERS 16 + +/* + * For quick access we cache registers in statically + * allocated arrays. Here we define the maximum size + * for those arrays. + */ +#define LP_MAX_INLINED_TEMPS 256 + +#define LP_MAX_INLINED_IMMEDIATES 256 + /** * Maximum control flow nesting * - * SM3.0 requires 24 + * SM4.0 requires 64 (per subroutine actually, subroutine nesting itself is 32) + * SM3.0 requires 24 (most likely per subroutine too) + * add 2 more (some translation could add one more) + */ +#define LP_MAX_TGSI_NESTING 66 + +/** + * Maximum iterations before loop termination + * Shared between every loop in a TGSI shader + */ +#define LP_MAX_TGSI_LOOP_ITERATIONS 65535 + + +/** + * Some of these limits are actually infinite (i.e., only limited by available + * memory), however advertising INT_MAX would cause some test problems to + * actually try to allocate the maximum and run out of memory and crash. So + * stick with something reasonable here. */ -#define LP_MAX_TGSI_NESTING 32 +static INLINE int +gallivm_get_shader_param(enum pipe_shader_cap param) +{ + switch(param) { + case PIPE_SHADER_CAP_MAX_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS: + case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS: + return 1 * 1024 * 1024; + case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH: + return LP_MAX_TGSI_NESTING; + case PIPE_SHADER_CAP_MAX_INPUTS: + return PIPE_MAX_SHADER_INPUTS; + case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE: + return sizeof(float[4]) * 4096; + case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: + return PIPE_MAX_CONSTANT_BUFFERS; + case PIPE_SHADER_CAP_MAX_TEMPS: + return LP_MAX_TGSI_TEMPS; + case PIPE_SHADER_CAP_MAX_PREDS: + return LP_MAX_TGSI_PREDS; + case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: + return 1; + case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: + case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: + case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR: + return 1; + case PIPE_SHADER_CAP_SUBROUTINES: + return 1; + case PIPE_SHADER_CAP_INTEGERS: + return 1; + case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: + return PIPE_MAX_SAMPLERS; + case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS: + return PIPE_MAX_SHADER_SAMPLER_VIEWS; + case PIPE_SHADER_CAP_PREFERRED_IR: + return PIPE_SHADER_IR_TGSI; + case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: + return 1; + case PIPE_SHADER_CAP_DOUBLES: + return 0; + } + /* if we get here, we missed a shader cap above (and should have seen + * a compiler warning.) + */ + return 0; +} #endif /* LP_BLD_LIMITS_H_ */