On Tue, Sep 6, 2011 at 12:12 PM, Jose Fonseca <jfons...@vmware.com> wrote: > ----- Original Message ----- >> On 05.09.2011 23:44, Marek Olšák wrote: >> > --- >> > src/gallium/include/pipe/p_defines.h | 1 + >> > src/mesa/state_tracker/st_extensions.c | 3 +++ >> > 2 files changed, 4 insertions(+), 0 deletions(-) >> > >> > diff --git a/src/gallium/include/pipe/p_defines.h >> > b/src/gallium/include/pipe/p_defines.h >> > index 19c0cab..9a9ce2e 100644 >> > --- a/src/gallium/include/pipe/p_defines.h >> > +++ b/src/gallium/include/pipe/p_defines.h >> > @@ -474,6 +474,7 @@ enum pipe_cap { >> > PIPE_CAP_SCALED_RESOLVE = 49, >> > PIPE_CAP_MIN_TEXEL_OFFSET = 50, >> > PIPE_CAP_MAX_TEXEL_OFFSET = 51, >> > + PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS = 52 >> > }; >> > >> Can we remove the old PIPE_CAP_ARRAY_TEXTURES then in favour of >> returning 0 as maximum number of layers ? > > I'd like that too FWIW.
Amended in the attached patch. Marek
From 13ca856296bb1d54e7b1cdd243569cd36ee301fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= <mar...@gmail.com> Date: Mon, 5 Sep 2011 22:52:21 +0200 Subject: [PATCH] gallium: add PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS v2: remove PIPE_CAP_ARRAY_TEXTURES in favor of the new CAP. --- src/gallium/drivers/i915/i915_screen.c | 2 +- src/gallium/drivers/nv50/nv50_screen.c | 2 +- src/gallium/drivers/nvc0/nvc0_screen.c | 4 ++-- src/gallium/drivers/nvfx/nvfx_screen.c | 2 +- src/gallium/drivers/r300/r300_screen.c | 2 +- src/gallium/drivers/r600/r600_pipe.c | 5 ++--- src/gallium/drivers/softpipe/sp_screen.c | 4 ++-- src/gallium/include/pipe/p_defines.h | 2 +- src/mesa/state_tracker/st_extensions.c | 5 ++++- 9 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index c108c70..4e55e16 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -124,7 +124,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap) return is->debug.lie ? 1 : 0; /* Unsupported features (boolean caps). */ - case PIPE_CAP_ARRAY_TEXTURES: + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: case PIPE_CAP_DEPTH_CLAMP: case PIPE_CAP_INDEP_BLEND_ENABLE: case PIPE_CAP_INDEP_BLEND_FUNC: diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c index 235cd82..7d43f1f 100644 --- a/src/gallium/drivers/nv50/nv50_screen.c +++ b/src/gallium/drivers/nv50/nv50_screen.c @@ -88,7 +88,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 10; case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: return 13; - case PIPE_CAP_ARRAY_TEXTURES: /* shader support missing */ + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: /* shader support missing */ return 0; case PIPE_CAP_TEXTURE_MIRROR_CLAMP: case PIPE_CAP_TEXTURE_MIRROR_REPEAT: diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c index d3027de..a8bd092 100644 --- a/src/gallium/drivers/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nvc0/nvc0_screen.c @@ -79,8 +79,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 10; case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: return 13; - case PIPE_CAP_ARRAY_TEXTURES: - return 1; + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: + return 8192; case PIPE_CAP_TEXTURE_MIRROR_CLAMP: case PIPE_CAP_TEXTURE_MIRROR_REPEAT: case PIPE_CAP_TEXTURE_SWIZZLE: diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index 3b77c96..5729e66 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -85,7 +85,7 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 0; // TODO: implement depth clamp case PIPE_CAP_PRIMITIVE_RESTART: return 0; // TODO: implement primitive restart - case PIPE_CAP_ARRAY_TEXTURES: + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 8c0500c..896ee9a 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -135,7 +135,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_DEPTH_CLAMP: case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_SHADER_STENCIL_EXPORT: - case PIPE_CAP_ARRAY_TEXTURES: + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT: case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER: diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index e02da6e..cfbeae5 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -380,9 +380,8 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER: return 0; - case PIPE_CAP_ARRAY_TEXTURES: - /* fix once the CS checker upstream is fixed */ - return debug_get_bool_option("R600_ARRAY_TEXTURE", FALSE); + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: + return 0; /* will be re-enabled in the following commits. */ /* Texturing. */ case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index d22ed4c..54bcf65 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -129,8 +129,8 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: return 1; - case PIPE_CAP_ARRAY_TEXTURES: - return 1; + case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: + return 64; /* matches core Mesa defaults */ case PIPE_CAP_MIN_TEXEL_OFFSET: return -8; case PIPE_CAP_MAX_TEXEL_OFFSET: diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 19c0cab..777a177 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -458,7 +458,7 @@ enum pipe_cap { /** different blend funcs per rendertarget */ PIPE_CAP_INDEP_BLEND_FUNC = 34, PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE = 35, - PIPE_CAP_ARRAY_TEXTURES = 36, + PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS = 36, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT = 37, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT = 38, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER = 39, diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index a41e9e8..96bde45 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -85,6 +85,9 @@ void st_init_limits(struct st_context *st) c->MaxTextureRectSize = _min(1 << (c->MaxTextureLevels - 1), MAX_TEXTURE_RECT_SIZE); + c->MaxArrayTextureLayers + = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS); + c->MaxTextureImageUnits = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS), MAX_TEXTURE_IMAGE_UNITS); @@ -499,7 +502,7 @@ void st_init_extensions(struct st_context *st) } /* GL_EXT_texture_array */ - if (screen->get_param(screen, PIPE_CAP_ARRAY_TEXTURES)) { + if (screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS) > 1) { ctx->Extensions.EXT_texture_array = GL_TRUE; ctx->Extensions.MESA_texture_array = GL_TRUE; } -- 1.7.4.1
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev