mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 05:28:05 +02:00
ac/rtld: check correct LDS max size
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
This commit is contained in:
parent
1ee0f0d315
commit
b64bd5887e
3 changed files with 12 additions and 1 deletions
|
|
@ -280,7 +280,13 @@ bool ac_rtld_open(struct ac_rtld_binary *binary,
|
|||
util_dynarray_foreach(&binary->lds_symbols, struct ac_rtld_symbol, symbol)
|
||||
symbol->part_idx = ~0u;
|
||||
|
||||
unsigned max_lds_size = i.info->chip_class >= GFX7 ? 64 * 1024 : 32 * 1024;
|
||||
unsigned max_lds_size = 64 * 1024;
|
||||
|
||||
if (i.info->chip_class == GFX6 ||
|
||||
(i.shader_type != MESA_SHADER_COMPUTE &&
|
||||
i.shader_type != MESA_SHADER_FRAGMENT))
|
||||
max_lds_size = 32 * 1024;
|
||||
|
||||
uint64_t shared_lds_size = 0;
|
||||
if (!layout_symbols(binary->lds_symbols.data, i.num_shared_lds_symbols, &shared_lds_size))
|
||||
goto fail;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include <stddef.h>
|
||||
|
||||
#include "util/u_dynarray.h"
|
||||
#include "compiler/shader_enums.h"
|
||||
|
||||
struct ac_rtld_part;
|
||||
struct ac_shader_config;
|
||||
|
|
@ -84,6 +85,7 @@ typedef bool (*ac_rtld_get_external_symbol_cb)(
|
|||
struct ac_rtld_open_info {
|
||||
const struct radeon_info *info;
|
||||
struct ac_rtld_options options;
|
||||
gl_shader_stage shader_type;
|
||||
|
||||
unsigned num_parts;
|
||||
const char * const *elf_ptrs; /* in-memory ELF objects of each part */
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include "tgsi/tgsi_strings.h"
|
||||
#include "tgsi/tgsi_util.h"
|
||||
#include "tgsi/tgsi_dump.h"
|
||||
#include "tgsi/tgsi_from_mesa.h"
|
||||
|
||||
#include "ac_binary.h"
|
||||
#include "ac_exp_param.h"
|
||||
|
|
@ -5098,6 +5099,7 @@ static bool si_shader_binary_open(struct si_screen *screen,
|
|||
struct ac_rtld_binary *rtld)
|
||||
{
|
||||
const struct si_shader_selector *sel = shader->selector;
|
||||
enum pipe_shader_type shader_type = sel ? sel->type : PIPE_SHADER_COMPUTE;
|
||||
const char *part_elfs[5];
|
||||
size_t part_sizes[5];
|
||||
unsigned num_parts = 0;
|
||||
|
|
@ -5136,6 +5138,7 @@ static bool si_shader_binary_open(struct si_screen *screen,
|
|||
.options = {
|
||||
.halt_at_entry = screen->options.halt_shaders,
|
||||
},
|
||||
.shader_type = tgsi_processor_to_shader_stage(shader_type),
|
||||
.num_parts = num_parts,
|
||||
.elf_ptrs = part_elfs,
|
||||
.elf_sizes = part_sizes,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue