On 01/18/2014 05:40 AM, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>
This can be derived from the shader caps.
---
src/gallium/docs/source/screen.rst | 2 --
src/gallium/drivers/freedreno/freedreno_screen.c | 2 --
src/gallium/drivers/i915/i915_screen.c | 7 -------
src/gallium/drivers/ilo/ilo_screen.c | 2 --
src/gallium/drivers/llvmpipe/lp_screen.c | 2 --
src/gallium/drivers/nouveau/nv30/nv30_screen.c | 2 --
src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 --
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 --
src/gallium/drivers/r300/r300_screen.c | 2 --
src/gallium/drivers/r600/r600_pipe.c | 2 --
src/gallium/drivers/radeonsi/si_pipe.c | 2 --
src/gallium/drivers/softpipe/sp_screen.c | 2 --
src/gallium/drivers/svga/svga_screen.c | 2 --
src/gallium/include/pipe/p_defines.h | 3 ---
src/mesa/state_tracker/st_extensions.c | 10 ++++++----
15 files changed, 6 insertions(+), 38 deletions(-)
...
diff --git a/src/mesa/state_tracker/st_extensions.c
b/src/mesa/state_tracker/st_extensions.c
index c17601a..4231d4c 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -89,10 +89,6 @@ void st_init_limits(struct st_context *st)
c->MaxArrayTextureLayers
= screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS);
- c->MaxCombinedTextureImageUnits
- = _min(screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SAMPLERS),
- MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-
/* Define max viewport size and max renderbuffer size in terms of
* max texture size (note: max tex RECT size = max tex 2D size).
* If this isn't true for some hardware we'll need new PIPE_CAP_ queries.
@@ -243,6 +239,12 @@ void st_init_limits(struct st_context *st)
options->LowerClipDistance = true;
}
+ c->MaxCombinedTextureImageUnits =
+ _min(c->Program[MESA_SHADER_VERTEX].MaxTextureImageUnits +
+ c->Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits +
+ c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS);
+
/* This depends on program constants. */
c->MaxTextureCoordUnits
= _min(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits,
MAX_TEXTURE_COORD_UNITS);
I'm not sure about this. The concept of
MAX_COMBINED_TEXTURE_IMAGE_UNITS goes back to the first shader hardware
where texture image units might be shared between the VS and FS.
The question is whether any of the hardware we care about has that
restriction.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev