{
RADV_FROM_HANDLE(radv_device, device, _device);
struct radv_pipeline_layout *layout;
- struct mesa_sha1 *ctx;
+ struct mesa_sha1 ctx;
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO);
unsigned dynamic_offset_count = 0;
- ctx = _mesa_sha1_init();
+ _mesa_sha1_init(&ctx);
for (uint32_t set = 0; set < pCreateInfo->setLayoutCount; set++) {
RADV_FROM_HANDLE(radv_descriptor_set_layout, set_layout,
pCreateInfo->pSetLayouts[set]);
for (uint32_t b = 0; b < set_layout->binding_count; b++) {
dynamic_offset_count += set_layout->binding[b].array_size * set_layout->binding[b].dynamic_offset_count;
}
- _mesa_sha1_update(ctx, set_layout->binding,
+ _mesa_sha1_update(&ctx, set_layout->binding,
sizeof(set_layout->binding[0]) * set_layout->binding_count);
}
}
layout->push_constant_size = align(layout->push_constant_size, 16);
- _mesa_sha1_update(ctx, &layout->push_constant_size,
+ _mesa_sha1_update(&ctx, &layout->push_constant_size,
sizeof(layout->push_constant_size));
- _mesa_sha1_final(ctx, layout->sha1);
+ _mesa_sha1_final(&ctx, layout->sha1);
*pPipelineLayout = radv_pipeline_layout_to_handle(layout);
return VK_SUCCESS;
const union ac_shader_variant_key *key,
uint32_t is_geom_copy_shader)
{
- struct mesa_sha1 *ctx;
+ struct mesa_sha1 ctx;
- ctx = _mesa_sha1_init();
+ _mesa_sha1_init(&ctx);
if (key)
- _mesa_sha1_update(ctx, key, sizeof(*key));
- _mesa_sha1_update(ctx, module->sha1, sizeof(module->sha1));
- _mesa_sha1_update(ctx, entrypoint, strlen(entrypoint));
+ _mesa_sha1_update(&ctx, key, sizeof(*key));
+ _mesa_sha1_update(&ctx, module->sha1, sizeof(module->sha1));
+ _mesa_sha1_update(&ctx, entrypoint, strlen(entrypoint));
if (layout)
- _mesa_sha1_update(ctx, layout->sha1, sizeof(layout->sha1));
+ _mesa_sha1_update(&ctx, layout->sha1, sizeof(layout->sha1));
if (spec_info) {
- _mesa_sha1_update(ctx, spec_info->pMapEntries,
+ _mesa_sha1_update(&ctx, spec_info->pMapEntries,
spec_info->mapEntryCount * sizeof spec_info->pMapEntries[0]);
- _mesa_sha1_update(ctx, spec_info->pData, spec_info->dataSize);
+ _mesa_sha1_update(&ctx, spec_info->pData, spec_info->dataSize);
}
- _mesa_sha1_update(ctx, &is_geom_copy_shader, 4);
- _mesa_sha1_final(ctx, hash);
+ _mesa_sha1_update(&ctx, &is_geom_copy_shader, 4);
+ _mesa_sha1_final(&ctx, hash);
}
}
}
- struct mesa_sha1 *ctx = _mesa_sha1_init();
+ struct mesa_sha1 ctx;
+ _mesa_sha1_init(&ctx);
for (unsigned s = 0; s < layout->num_sets; s++) {
- sha1_update_descriptor_set_layout(ctx, layout->set[s].layout);
- _mesa_sha1_update(ctx, &layout->set[s].dynamic_offset_start,
+ sha1_update_descriptor_set_layout(&ctx, layout->set[s].layout);
+ _mesa_sha1_update(&ctx, &layout->set[s].dynamic_offset_start,
sizeof(layout->set[s].dynamic_offset_start));
}
- _mesa_sha1_update(ctx, &layout->num_sets, sizeof(layout->num_sets));
+ _mesa_sha1_update(&ctx, &layout->num_sets, sizeof(layout->num_sets));
for (unsigned s = 0; s < MESA_SHADER_STAGES; s++) {
- _mesa_sha1_update(ctx, &layout->stage[s].has_dynamic_offsets,
+ _mesa_sha1_update(&ctx, &layout->stage[s].has_dynamic_offsets,
sizeof(layout->stage[s].has_dynamic_offsets));
}
- _mesa_sha1_final(ctx, layout->sha1);
+ _mesa_sha1_final(&ctx, layout->sha1);
*pPipelineLayout = anv_pipeline_layout_to_handle(layout);
const struct anv_pipeline_layout *pipeline_layout,
const VkSpecializationInfo *spec_info)
{
- struct mesa_sha1 *ctx;
+ struct mesa_sha1 ctx;
- ctx = _mesa_sha1_init();
- _mesa_sha1_update(ctx, key, key_size);
- _mesa_sha1_update(ctx, module->sha1, sizeof(module->sha1));
- _mesa_sha1_update(ctx, entrypoint, strlen(entrypoint));
+ _mesa_sha1_init(&ctx);
+ _mesa_sha1_update(&ctx, key, key_size);
+ _mesa_sha1_update(&ctx, module->sha1, sizeof(module->sha1));
+ _mesa_sha1_update(&ctx, entrypoint, strlen(entrypoint));
if (pipeline_layout) {
- _mesa_sha1_update(ctx, pipeline_layout->sha1,
+ _mesa_sha1_update(&ctx, pipeline_layout->sha1,
sizeof(pipeline_layout->sha1));
}
/* hash in shader stage, pipeline layout? */
if (spec_info) {
- _mesa_sha1_update(ctx, spec_info->pMapEntries,
+ _mesa_sha1_update(&ctx, spec_info->pMapEntries,
spec_info->mapEntryCount * sizeof spec_info->pMapEntries[0]);
- _mesa_sha1_update(ctx, spec_info->pData, spec_info->dataSize);
+ _mesa_sha1_update(&ctx, spec_info->pData, spec_info->dataSize);
}
- _mesa_sha1_final(ctx, hash);
+ _mesa_sha1_final(&ctx, hash);
}
static struct anv_shader_bin *
#include "sha1/sha1.h"
#include "mesa-sha1.h"
-struct mesa_sha1 *
-_mesa_sha1_init(void)
-{
- SHA1_CTX *ctx = malloc(sizeof(*ctx));
-
- if (!ctx)
- return NULL;
-
- SHA1Init(ctx);
- return (struct mesa_sha1 *) ctx;
-}
-
int
_mesa_sha1_update(struct mesa_sha1 *ctx, const void *data, int size)
{
- SHA1_CTX *sha1_ctx = (SHA1_CTX *) ctx;
-
- SHA1Update(sha1_ctx, data, size);
- return 1;
-}
-
-int
-_mesa_sha1_final(struct mesa_sha1 *ctx, unsigned char result[20])
-{
- SHA1_CTX *sha1_ctx = (SHA1_CTX *) ctx;
-
- SHA1Final(result, sha1_ctx);
- free(sha1_ctx);
+ SHA1Update(ctx, data, size);
return 1;
}
void
_mesa_sha1_compute(const void *data, size_t size, unsigned char result[20])
{
- struct mesa_sha1 *ctx;
+ struct mesa_sha1 ctx;
- ctx = _mesa_sha1_init();
- _mesa_sha1_update(ctx, data, size);
- _mesa_sha1_final(ctx, result);
+ _mesa_sha1_init(&ctx);
+ _mesa_sha1_update(&ctx, data, size);
+ _mesa_sha1_final(&ctx, result);
}
char *
#define SHA1_H
#include <stdlib.h>
+#include "sha1/sha1.h"
#ifdef __cplusplus
extern "C" {
#endif
-struct mesa_sha1;
+#define mesa_sha1 _SHA1_CTX
-struct mesa_sha1 *
-_mesa_sha1_init(void);
+#define _mesa_sha1_init SHA1Init
int
_mesa_sha1_update(struct mesa_sha1 *ctx, const void *data, int size);
-int
-_mesa_sha1_final(struct mesa_sha1 *ctx, unsigned char result[20]);
+static inline void
+_mesa_sha1_final(struct mesa_sha1 *ctx, unsigned char result[20])
+{
+ SHA1Final(result, ctx);
+}
char *
_mesa_sha1_format(char *buf, const unsigned char *sha1);