}
}
+static inline unsigned
+_mesa_material_enum_to_count(GLenum pname)
+{
+ switch (pname) {
+ case GL_EMISSION:
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_AMBIENT_AND_DIFFUSE:
+ return 4;
+ case GL_COLOR_INDEXES:
+ return 3;
+ case GL_SHININESS:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static inline unsigned
+_mesa_point_param_enum_to_count(GLenum pname)
+{
+ switch (pname) {
+ case GL_DISTANCE_ATTENUATION_EXT:
+ return 3;
+ case GL_POINT_SIZE_MIN_EXT:
+ case GL_POINT_SIZE_MAX_EXT:
+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
+ case GL_POINT_SPRITE_R_MODE_NV:
+ case GL_POINT_SPRITE_COORD_ORIGIN:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static inline unsigned
+_mesa_calllists_enum_to_count(GLenum type)
+{
+ switch (type) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ return 1;
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_2_BYTES:
+ return 2;
+ case GL_3_BYTES:
+ return 3;
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_FLOAT:
+ case GL_4_BYTES:
+ return 4;
+ default:
+ return 0;
+ }
+}
+
+static inline unsigned
+_mesa_patch_param_enum_to_count(GLenum pname)
+{
+ switch (pname) {
+ case GL_PATCH_DEFAULT_OUTER_LEVEL:
+ return 4;
+ case GL_PATCH_DEFAULT_INNER_LEVEL:
+ return 2;
+ default:
+ return 0;
+ }
+}
+
+static inline unsigned
+_mesa_memobj_enum_to_count(GLenum pname)
+{
+ switch (pname) {
+ case GL_DEDICATED_MEMORY_OBJECT_EXT:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static inline unsigned
+_mesa_semaphore_enum_to_count(GLenum pname)
+{
+ switch (pname) {
+ /* EXT_semaphore and EXT_semaphore_fd define no parameters */
+ default:
+ return 0;
+ }
+}
+
#endif /* MARSHAL_H */