X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr600%2Fevergreen_compute_internal.h;h=4f3ba564fd07e09567ed4a3527da5041388c3ea3;hb=3b143369a55d1b79f7db14dda587e18f6b27c975;hp=f904d610bdf612a33aa225b6f5c5a2cff28356e0;hpb=53fbae7eace466d8fe22173c01518fbde7102d6c;p=mesa.git diff --git a/src/gallium/drivers/r600/evergreen_compute_internal.h b/src/gallium/drivers/r600/evergreen_compute_internal.h index f904d610bdf..4f3ba564fd0 100644 --- a/src/gallium/drivers/r600/evergreen_compute_internal.h +++ b/src/gallium/drivers/r600/evergreen_compute_internal.h @@ -21,31 +21,73 @@ * Authors: * Adam Rak */ - #ifndef EVERGREEN_COMPUTE_INTERNAL_H #define EVERGREEN_COMPUTE_INTERNAL_H +#include "ac_binary.h" #include "r600_asm.h" - -struct r600_kernel { - unsigned count; #ifdef HAVE_OPENCL - LLVMModuleRef llvm_module; +#include #endif - struct r600_resource *code_bo; - struct r600_bytecode bc; + +struct r600_shader_reloc { + char name[32]; + uint64_t offset; +}; + +struct r600_shader_binary { + unsigned code_size; + unsigned config_size; + /** The number of bytes of config information for each global symbol. + */ + unsigned config_size_per_symbol; + unsigned rodata_size; + unsigned global_symbol_count; + unsigned reloc_count; + + /** Shader code */ + unsigned char *code; + + /** Config/Context register state that accompanies this shader. + * This is a stream of dword pairs. First dword contains the + * register address, the second dword contains the value.*/ + unsigned char *config; + + + /** Constant data accessed by the shader. This will be uploaded + * into a constant buffer. */ + unsigned char *rodata; + + /** List of symbol offsets for the shader */ + uint64_t *global_symbol_offsets; + + struct r600_shader_reloc *relocs; + + /** Disassembled shader in a string. */ + char *disasm_string; }; struct r600_pipe_compute { struct r600_context *ctx; - unsigned num_kernels; - struct r600_kernel *kernels; + struct r600_shader_binary binary; + + enum pipe_shader_ir ir_type; + + /* tgsi selector */ + struct r600_pipe_shader_selector *sel; + + struct r600_resource *code_bo; + struct r600_bytecode bc; unsigned local_size; unsigned private_size; unsigned input_size; struct r600_resource *kernel_param; + +#ifdef HAVE_OPENCL + LLVMContextRef llvm_ctx; +#endif }; struct r600_resource* r600_compute_buffer_alloc_vram(struct r600_screen *screen, unsigned size);