radeonsi: Bugfix needed for hashcat

Hashcat needs MAX_GLOBAL_BUFFERS to be 21 or even 22 for some modes. It'll crash otherwise.
I'm adding an assert to see if programs need it to be even higher.

Signed-off-by: Christian Inci <chris.bugsfd@broke-the-inter.net>
[Handle first properly; should be NFC, since clover always uses first == 0.]
Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Christian Inci 2016-12-19 23:26:35 +01:00 committed by Nicolai Hähnle
parent eca57f85ee
commit 7a4ea95f1c
1 changed files with 7 additions and 5 deletions

View File

@ -32,7 +32,7 @@
#include "si_pipe.h"
#include "sid.h"
#define MAX_GLOBAL_BUFFERS 20
#define MAX_GLOBAL_BUFFERS 22
struct si_compute {
unsigned ir_type;
@ -196,17 +196,19 @@ static void si_set_global_binding(
struct si_context *sctx = (struct si_context*)ctx;
struct si_compute *program = sctx->cs_shader_state.program;
assert(first + n <= MAX_GLOBAL_BUFFERS);
if (!resources) {
for (i = first; i < first + n; i++) {
pipe_resource_reference(&program->global_buffers[i], NULL);
for (i = 0; i < n; i++) {
pipe_resource_reference(&program->global_buffers[first + i], NULL);
}
return;
}
for (i = first; i < first + n; i++) {
for (i = 0; i < n; i++) {
uint64_t va;
uint32_t offset;
pipe_resource_reference(&program->global_buffers[i], resources[i]);
pipe_resource_reference(&program->global_buffers[first + i], resources[i]);
va = r600_resource(resources[i])->gpu_address;
offset = util_le32_to_cpu(*handles[i]);
va += offset;