blob: 4694f8473b09add2491bb76eaa8eec57eedfbfff [file] [log] [blame]
/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can
* be found in the LICENSE file.
*
*/
#pragma once
//
//
//
#include <stdint.h>
#include "common/macros.h"
//
// This structure packages all of the parameters and SPIR-V kernels
// for a target architecture.
//
struct hs_vk_target_config
{
struct {
uint8_t threads_log2;
uint8_t width_log2;
uint8_t height;
} slab;
struct {
uint8_t key;
uint8_t val;
} words;
struct {
uint8_t slabs;
} block;
struct {
struct {
uint8_t scale_min;
uint8_t scale_max;
} fm;
struct {
uint8_t scale_min;
uint8_t scale_max;
} hm;
} merge;
uint8_t pad[2];
};
STATIC_ASSERT_MACRO(sizeof(struct hs_vk_target_config) == 12,
"modules.bytes[] must start on a 32-bit boundary");
//
// For now, kernels are appended end-to-end with a leading big-endian
// length followed by a SPIR-V binary.
//
// The entry point for each kernel is "main".
//
// When the tools support packaging multiple named compute shaders in
// one SPIR-V module then reevaluate this encoding.
//
struct hs_vk_target
{
struct hs_vk_target_config config;
uint8_t modules[];
};
//
//
//