[03/14] mesa: don't include compute resources in MAX_COMBINED_* limits

Submitted by Marek Olšák on Aug. 8, 2018, 11:55 p.m.

Details

Message ID 20180808235523.25488-4-maraeo@gmail.com
State New
Headers show
Series "Adjusting OpenGL limits and constants" ( rev: 2 1 ) in Mesa

Not browsing as part of any series.

Commit Message

Marek Olšák Aug. 8, 2018, 11:55 p.m.
From: Marek Olšák <marek.olsak@amd.com>

5 is the maximum number of shader stages that can be used by 1 execution
call at the same time (e.g. a draw call). The limit ensures that each
stage can use all of its binding points.

Compute is separate and doesn't need the 5x multiplier.
---
 src/mesa/main/config.h | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
index fdf90d8956f..10c3f7d7725 100644
--- a/src/mesa/main/config.h
+++ b/src/mesa/main/config.h
@@ -163,31 +163,33 @@ 
  * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
  * and GLSL shader names for the same thing.  They should \b always have the
  * same value.  Each refers to the number of vec4 values supplied as
  * per-program parameters.
  */
 /*@{*/
 #define MAX_PROGRAM_LOCAL_PARAMS       4096
 #define MAX_UNIFORMS                   4096
 #define MAX_UNIFORM_BUFFERS            15 /* + 1 default uniform buffer */
 #define MAX_SHADER_STORAGE_BUFFERS     16
-/* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
-#define MAX_COMBINED_UNIFORM_BUFFERS   (MAX_UNIFORM_BUFFERS * 6)
-#define MAX_COMBINED_SHADER_STORAGE_BUFFERS   (MAX_SHADER_STORAGE_BUFFERS * 6)
+/* 5 is for vertex, hull, domain, geometry, and fragment shader. Don't
+ * include compute.
+ */
+#define MAX_COMBINED_UNIFORM_BUFFERS   (MAX_UNIFORM_BUFFERS * 5)
+#define MAX_COMBINED_SHADER_STORAGE_BUFFERS   (MAX_SHADER_STORAGE_BUFFERS * 5)
 #define MAX_ATOMIC_COUNTERS            4096
-/* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
-#define MAX_COMBINED_ATOMIC_BUFFERS    (MAX_UNIFORM_BUFFERS * 6)
+/* 5 is for vertex, hull, domain, geometry, and fragment shader. */
+#define MAX_COMBINED_ATOMIC_BUFFERS    (MAX_UNIFORM_BUFFERS * 5)
 /* Size of an atomic counter in bytes according to ARB_shader_atomic_counters */
 #define ATOMIC_COUNTER_SIZE            4
 #define MAX_IMAGE_UNIFORMS             32
-/* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
-#define MAX_IMAGE_UNITS                (MAX_IMAGE_UNIFORMS * 6)
+/* 5 is for vertex, hull, domain, geometry, and fragment shader. */
+#define MAX_IMAGE_UNITS                (MAX_IMAGE_UNIFORMS * 5)
 /*@}*/
 
 /**
  * Per-context constants (power of two)
  *
  * \note
  * This value should always be less than or equal to \c MAX_PROGRAM_LOCAL_PARAMS
  * and \c MAX_VERTEX_PROGRAM_PARAMS.  Otherwise some applications will make
  * incorrect assumptions.
  */
@@ -212,22 +214,24 @@ 
 /** For GL_ARB_fragment_program */
 /*@{*/
 #define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
 #define MAX_FRAGMENT_PROGRAM_PARAMS       64
 #define MAX_FRAGMENT_PROGRAM_INPUTS       12
 /*@}*/
 
 /** For GL_ARB_vertex_shader */
 /*@{*/
 #define MAX_VERTEX_GENERIC_ATTRIBS 16
-/* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
-#define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_TEXTURE_IMAGE_UNITS * 6)
+/* 5 is the number of shader stages that can be used at the same time.
+ * compute can't be used at the same time as other shaders.
+ */
+#define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_TEXTURE_IMAGE_UNITS * 5)
 /*@}*/
 
 
 /** For GL_ARB_draw_buffers */
 /*@{*/
 #define MAX_DRAW_BUFFERS 8
 /*@}*/
 
 
 /** For GL_EXT_framebuffer_object */