Add option for Voodoo to use 4 render threads.
This commit is contained in:
parent
dbb10c0894
commit
52a79fbb57
7 changed files with 185 additions and 93 deletions
|
|
@ -38,8 +38,8 @@ typedef struct voodoo_x86_data_t
|
|||
|
||||
//static voodoo_x86_data_t voodoo_x86_data[2][BLOCK_NUM];
|
||||
|
||||
static int last_block[2] = {0, 0};
|
||||
static int next_block_to_write[2] = {0, 0};
|
||||
static int last_block[4] = {0, 0};
|
||||
static int next_block_to_write[4] = {0, 0};
|
||||
|
||||
#define addbyte(val) \
|
||||
do { \
|
||||
|
|
@ -3346,7 +3346,7 @@ static inline void *voodoo_get_block(voodoo_t *voodoo, voodoo_params_t *params,
|
|||
|
||||
for (c = 0; c < 8; c++)
|
||||
{
|
||||
data = &voodoo_x86_data[odd_even + c*2]; //&voodoo_x86_data[odd_even][b];
|
||||
data = &voodoo_x86_data[odd_even + c*4]; //&voodoo_x86_data[odd_even][b];
|
||||
|
||||
if (state->xdir == data->xdir &&
|
||||
params->alphaMode == data->alphaMode &&
|
||||
|
|
@ -3366,7 +3366,7 @@ static inline void *voodoo_get_block(voodoo_t *voodoo, voodoo_params_t *params,
|
|||
b = (b + 1) & 7;
|
||||
}
|
||||
voodoo_recomp++;
|
||||
data = &voodoo_x86_data[odd_even + next_block_to_write[odd_even]*2];
|
||||
data = &voodoo_x86_data[odd_even + next_block_to_write[odd_even]*4];
|
||||
// code_block = data->code_block;
|
||||
|
||||
voodoo_generate(data->code_block, voodoo, params, state, depth_op);
|
||||
|
|
@ -3392,9 +3392,9 @@ void voodoo_codegen_init(voodoo_t *voodoo)
|
|||
int c;
|
||||
|
||||
#if WIN64
|
||||
voodoo->codegen_data = VirtualAlloc(NULL, sizeof(voodoo_x86_data_t) * BLOCK_NUM * 2, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
|
||||
voodoo->codegen_data = VirtualAlloc(NULL, sizeof(voodoo_x86_data_t) * BLOCK_NUM * 4, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
|
||||
#else
|
||||
voodoo->codegen_data = mmap(0, sizeof(voodoo_x86_data_t) * BLOCK_NUM*2, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, 0, 0);
|
||||
voodoo->codegen_data = mmap(0, sizeof(voodoo_x86_data_t) * BLOCK_NUM*4, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, 0, 0);
|
||||
#endif
|
||||
|
||||
for (c = 0; c < 256; c++)
|
||||
|
|
@ -3424,7 +3424,7 @@ void voodoo_codegen_close(voodoo_t *voodoo)
|
|||
#if WIN64
|
||||
VirtualFree(voodoo->codegen_data, 0, MEM_RELEASE);
|
||||
#else
|
||||
munmap(voodoo->codegen_data, sizeof(voodoo_x86_data_t) * BLOCK_NUM*2);
|
||||
munmap(voodoo->codegen_data, sizeof(voodoo_x86_data_t) * BLOCK_NUM*4);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue