mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
attributes: optimize validation of tex_coord%d_in names
This avoids using sscanf to determine the texture_unit that a tex_coord%d_in attribute name corresponds to since that was showing high on profiles. Instead once we know we have a "tex_coord" name then we can simply use strtoul which is much cheaper and use the returned endptr we get to verify we have a "_in" suffix after the number. Reviewed-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
parent
d739892a5c
commit
77a7add50e
@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
/* This isn't defined in the GLES headers */
|
/* This isn't defined in the GLES headers */
|
||||||
#ifndef GL_UNSIGNED_INT
|
#ifndef GL_UNSIGNED_INT
|
||||||
@ -163,7 +164,9 @@ validate_cogl_attribute (const char *name,
|
|||||||
*name_id = COGL_ATTRIBUTE_NAME_ID_TEXTURE_COORD_ARRAY;
|
*name_id = COGL_ATTRIBUTE_NAME_ID_TEXTURE_COORD_ARRAY;
|
||||||
else if (strncmp (name, "tex_coord", strlen ("tex_coord")) == 0)
|
else if (strncmp (name, "tex_coord", strlen ("tex_coord")) == 0)
|
||||||
{
|
{
|
||||||
if (sscanf (name, "tex_coord%u_in", texture_unit) != 1)
|
char *endptr;
|
||||||
|
*texture_unit = strtoul (name + 9, &endptr, 10);
|
||||||
|
if (strcmp (endptr, "_in") != 0)
|
||||||
{
|
{
|
||||||
g_warning ("Texture coordinate attributes should either be named "
|
g_warning ("Texture coordinate attributes should either be named "
|
||||||
"\"cogl_tex_coord\" or named with a texture unit index "
|
"\"cogl_tex_coord\" or named with a texture unit index "
|
||||||
|
Loading…
Reference in New Issue
Block a user