From: Christoph Bumiller Date: Fri, 20 Jan 2012 12:43:32 +0000 (+0100) Subject: nvc0: fix some limit cap values X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ab69d584f923101fab05560b8e9ff97cf3cc2c5f;p=mesa.git nvc0: fix some limit cap values NOTE: This is a candidate for the 8.0 branch. --- diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c index a991e67af5c..f9ad39df706 100644 --- a/src/gallium/drivers/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nvc0/nvc0_screen.c @@ -69,15 +69,14 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) { switch (param) { case PIPE_CAP_MAX_COMBINED_SAMPLERS: - return 64; + return 16 * PIPE_SHADER_TYPES; /* NOTE: should not count COMPUTE */ case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: - return 13; - case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: - return 10; case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: - return 13; + return 15; + case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: + return 12; case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: - return 8192; + return 2048; case PIPE_CAP_MIN_TEXEL_OFFSET: return -8; case PIPE_CAP_MAX_TEXEL_OFFSET: @@ -167,7 +166,9 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, case PIPE_SHADER_CAP_MAX_INPUTS: if (shader == PIPE_SHADER_VERTEX) return 32; - return 0x300 / 16; + if (shader == PIPE_SHADER_FRAGMENT) + return (0x200 + 0x20 + 0x80) / 16; /* generic + colors + TexCoords */ + return (0x200 + 0x40 + 0x80) / 16; /* without 0x60 for per-patch inputs */ case PIPE_SHADER_CAP_MAX_CONSTS: return 65536 / 16; case PIPE_SHADER_CAP_MAX_CONST_BUFFERS: @@ -191,7 +192,11 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, case PIPE_SHADER_CAP_INTEGERS: return 1; case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: + return 16; /* would be 32 in linked (OpenGL-style) mode */ + /* + case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLER_VIEWS: return 32; + */ case PIPE_SHADER_CAP_OUTPUT_READ: return 0; /* shader != PIPE_SHADER_TESSELLATION_CONTROL; */ default: @@ -208,12 +213,13 @@ nvc0_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param) case PIPE_CAPF_MAX_LINE_WIDTH_AA: return 10.0f; case PIPE_CAPF_MAX_POINT_WIDTH: + return 63.0f; case PIPE_CAPF_MAX_POINT_WIDTH_AA: - return 64.0f; + return 63.375f; case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY: return 16.0f; case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS: - return 4.0f; + return 15.0f; default: NOUVEAU_ERR("unknown PIPE_CAP %d\n", param); return 0.0f;