blob: cf9732cf4fe12f2edd88dc5a9e792387932d0b7f [file] [log] [blame]
/*
* Copyright © 2024 Intel Corporation
* SPDX-License-Identifier: MIT
*/
#ifndef EXECUTOR_H
#define EXECUTOR_H
#include <stdint.h>
#include "intel/dev/intel_device_info.h"
#include "intel/isl/isl.h"
typedef struct {
uint32_t size;
uint32_t handle;
void *map;
void *cursor;
uint64_t addr;
} executor_bo;
typedef struct {
void *mem_ctx;
struct intel_device_info *devinfo;
struct isl_device *isl_dev;
int fd;
struct {
uint32_t ctx_id;
} i915;
struct {
uint32_t vm_id;
uint32_t queue_id;
} xe;
struct {
executor_bo batch;
executor_bo extra;
executor_bo data;
} bo;
uint64_t batch_start;
} executor_context;
typedef struct {
const char *original_src;
void *kernel_bin;
uint32_t kernel_size;
} executor_params;
typedef struct {
uint64_t offset;
} executor_address;
__attribute__((unused)) static uint64_t
executor_combine_address(void *data, void *location,
executor_address address, uint32_t delta)
{
return address.offset + delta;
}
executor_address executor_address_of_ptr(executor_bo *bo, void *ptr);
void *executor_alloc_bytes(executor_bo *bo, uint32_t size);
void *executor_alloc_bytes_aligned(executor_bo *bo, uint32_t size, uint32_t alignment);
void failf(const char *fmt, ...) PRINTFLIKE(1, 2);
const char *executor_apply_macros(executor_context *ec, const char *original_src);
#ifdef genX
# include "executor_genx.h"
#else
# define genX(x) gfx9_##x
# include "executor_genx.h"
# undef genX
# define genX(x) gfx11_##x
# include "executor_genx.h"
# undef genX
# define genX(x) gfx12_##x
# include "executor_genx.h"
# undef genX
# define genX(x) gfx125_##x
# include "executor_genx.h"
# undef genX
# define genX(x) gfx20_##x
# include "executor_genx.h"
# undef genX
# define genX(x) gfx30_##x
# include "executor_genx.h"
# undef genX
#endif
#endif /* EXECUTOR_H */