blob: 705bf82bb58a588874447e2364899fbac08875c6 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_TARGET_H_
#define SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_TARGET_H_
//
//
//
#include <stdint.h>
#include "target_requirements.h"
//
//
//
#define RS_HEADER_MAGIC 0x4B565352 // "RSVK"
//
// This structure packages target-specific configuration parameters.
//
struct radix_sort_vk_target_config
{
uint32_t keyval_dwords;
struct
{
uint32_t workgroup_size_log2;
} init;
struct
{
uint32_t workgroup_size_log2;
} fill;
struct
{
uint32_t workgroup_size_log2;
uint32_t subgroup_size_log2;
uint32_t block_rows;
} histogram;
struct
{
uint32_t workgroup_size_log2;
uint32_t subgroup_size_log2;
} prefix;
struct
{
uint32_t workgroup_size_log2;
uint32_t subgroup_size_log2;
uint32_t block_rows;
} scatter;
};
//
//
//
struct radix_sort_vk_target_header
{
uint32_t magic; // magic header dword
union radix_sort_vk_target_extensions extensions; // target device extensions
union radix_sort_vk_target_features features; // target device features
struct radix_sort_vk_target_config config; // target configuration
uint32_t modules[]; // SPIR-V modules
};
//
//
//
// This macro must precede each `kRodata` definition in a `header.c` file.
// See //src/graphics/lib/compute/tools/target_archive/rodata-extract.ld.
#define RODATA_EXTRACT \
__attribute__((section(".rodata-extract"), used, retain, no_sanitize("address", "hwaddress")))
#endif // SRC_GRAPHICS_LIB_COMPUTE_RADIX_SORT_PLATFORMS_VK_TARGET_H_