summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2018-01-16 16:52:50 -0800
committerJason Ekstrand <jason.ekstrand@intel.com>2018-01-23 00:15:40 -0800
commit083e1266942b7bbcc038dfa20735d198db118493 (patch)
tree556337f1f783b309db54a62931f4ca26e97ab39a
parent7039308d7c9a2d488f13cd40a949196dc03034d4 (diff)
anv/entrypoints: Split entrypoint index lookup into its own function
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
-rw-r--r--src/intel/vulkan/anv_entrypoints_gen.py19
-rw-r--r--src/intel/vulkan/anv_private.h2
2 files changed, 16 insertions, 5 deletions
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index 6c922b8a642..9dbf828131e 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -215,8 +215,8 @@ static const uint16_t map[] = {
% endfor
};
-void *
-anv_lookup_entrypoint(const struct gen_device_info *devinfo, const char *name)
+int
+anv_get_entrypoint_index(const char *name)
{
static const uint32_t prime_factor = ${prime_factor};
static const uint32_t prime_step = ${prime_step};
@@ -232,15 +232,24 @@ anv_lookup_entrypoint(const struct gen_device_info *devinfo, const char *name)
do {
i = map[h & ${hash_mask}];
if (i == none)
- return NULL;
+ return -1;
e = &entrypoints[i];
h += prime_step;
} while (e->hash != hash);
if (strcmp(name, strings + e->name) != 0)
- return NULL;
+ return -1;
+
+ return i;
+}
- return anv_resolve_entrypoint(devinfo, i);
+void *
+anv_lookup_entrypoint(const struct gen_device_info *devinfo, const char *name)
+{
+ int idx = anv_get_entrypoint_index(name);
+ if (idx < 0)
+ return NULL;
+ return anv_resolve_entrypoint(devinfo, idx);
}""", output_encoding='utf-8')
NONE = 0xffff
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 36d87e2f176..1fd7c39567d 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -2816,6 +2816,8 @@ struct anv_query_pool {
struct anv_bo bo;
};
+int anv_get_entrypoint_index(const char *name);
+
void *anv_lookup_entrypoint(const struct gen_device_info *devinfo,
const char *name);