nv2a: Print values of looped parameters

This commit is contained in:
Erik Abair 2021-12-16 22:08:16 -08:00
parent ea9edadd3c
commit 271264a142
1 changed files with 50 additions and 0 deletions

View File

@ -1710,6 +1710,7 @@ DEF_METHOD(NV097, SET_POINT_SIZE)
DEF_METHOD_INC(NV097, SET_PROJECTION_MATRIX)
{
int slot = (method - NV097_SET_PROJECTION_MATRIX) / 4;
NV2A_DPRINTF("NV097_SET_PROJECTION_MATRIX[%d] 0x%X\n", slot, parameter);
// pg->projection_matrix[slot] = *(float*)&parameter;
unsigned int row = NV_IGRAPH_XF_XFCTX_PMAT0 + slot/4;
pg->vsh_constants[row][slot%4] = parameter;
@ -1719,6 +1720,7 @@ DEF_METHOD_INC(NV097, SET_PROJECTION_MATRIX)
DEF_METHOD_INC(NV097, SET_MODEL_VIEW_MATRIX)
{
int slot = (method - NV097_SET_MODEL_VIEW_MATRIX) / 4;
NV2A_DPRINTF("NV097_SET_MODEL_VIEW_MATRIX[%d] 0x%X\n", slot, parameter);
unsigned int matnum = slot / 16;
unsigned int entry = slot % 16;
unsigned int row = NV_IGRAPH_XF_XFCTX_MMAT0 + matnum*8 + entry/4;
@ -1729,6 +1731,8 @@ DEF_METHOD_INC(NV097, SET_MODEL_VIEW_MATRIX)
DEF_METHOD_INC(NV097, SET_INVERSE_MODEL_VIEW_MATRIX)
{
int slot = (method - NV097_SET_INVERSE_MODEL_VIEW_MATRIX) / 4;
NV2A_DPRINTF("NV097_SET_INVERSE_MODEL_VIEW_MATRIX[%d] 0x%X\n", slot,
parameter);
unsigned int matnum = slot / 16;
unsigned int entry = slot % 16;
unsigned int row = NV_IGRAPH_XF_XFCTX_IMMAT0 + matnum*8 + entry/4;
@ -1739,6 +1743,7 @@ DEF_METHOD_INC(NV097, SET_INVERSE_MODEL_VIEW_MATRIX)
DEF_METHOD_INC(NV097, SET_COMPOSITE_MATRIX)
{
int slot = (method - NV097_SET_COMPOSITE_MATRIX) / 4;
NV2A_DPRINTF("NV097_SET_COMPOSITE_MATRIX[%d] 0x%X\n", slot, parameter);
unsigned int row = NV_IGRAPH_XF_XFCTX_CMAT0 + slot/4;
pg->vsh_constants[row][slot%4] = parameter;
pg->vsh_constants_dirty[row] = true;
@ -1747,6 +1752,7 @@ DEF_METHOD_INC(NV097, SET_COMPOSITE_MATRIX)
DEF_METHOD_INC(NV097, SET_TEXTURE_MATRIX)
{
int slot = (method - NV097_SET_TEXTURE_MATRIX) / 4;
NV2A_DPRINTF("NV097_SET_TEXTURE_MATRIX[%d] 0x%X\n", slot, parameter);
unsigned int tex = slot / 16;
unsigned int entry = slot % 16;
unsigned int row = NV_IGRAPH_XF_XFCTX_T0MAT + tex*8 + entry/4;
@ -1757,6 +1763,7 @@ DEF_METHOD_INC(NV097, SET_TEXTURE_MATRIX)
DEF_METHOD_INC(NV097, SET_FOG_PARAMS)
{
int slot = (method - NV097_SET_FOG_PARAMS) / 4;
NV2A_DPRINTF("NV097_SET_FOG_PARAMS[%d] 0x%X\n", slot, parameter);
if (slot < 2) {
pgraph_reg_w(pg, NV_PGRAPH_FOGPARAM0 + slot*4, parameter);
} else {
@ -1771,6 +1778,7 @@ DEF_METHOD_INC(NV097, SET_FOG_PARAMS)
DEF_METHOD_INC(NV097, SET_TEXGEN_PLANE_S)
{
int slot = (method - NV097_SET_TEXGEN_PLANE_S) / 4;
NV2A_DPRINTF("NV097_SET_TEXGEN_PLANE_S[%d] 0x%X\n", slot, parameter);
unsigned int tex = slot / 16;
unsigned int entry = slot % 16;
unsigned int row = NV_IGRAPH_XF_XFCTX_TG0MAT + tex*8 + entry/4;
@ -1787,6 +1795,7 @@ DEF_METHOD(NV097, SET_TEXGEN_VIEW_MODEL)
DEF_METHOD_INC(NV097, SET_FOG_PLANE)
{
int slot = (method - NV097_SET_FOG_PLANE) / 4;
NV2A_DPRINTF("NV097_SET_FOG_PLANE[%d] 0x%X\n", slot, parameter);
pg->vsh_constants[NV_IGRAPH_XF_XFCTX_FOG][slot] = parameter;
pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_FOG] = true;
}
@ -1794,6 +1803,7 @@ DEF_METHOD_INC(NV097, SET_FOG_PLANE)
DEF_METHOD_INC(NV097, SET_SCENE_AMBIENT_COLOR)
{
int slot = (method - NV097_SET_SCENE_AMBIENT_COLOR) / 4;
NV2A_DPRINTF("NV097_SET_SCENE_AMBIENT_COLOR[%d] 0x%X\n", slot, parameter);
// ??
pg->ltctxa[NV_IGRAPH_XF_LTCTXA_FR_AMB][slot] = parameter;
pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_FR_AMB] = true;
@ -1802,6 +1812,7 @@ DEF_METHOD_INC(NV097, SET_SCENE_AMBIENT_COLOR)
DEF_METHOD_INC(NV097, SET_VIEWPORT_OFFSET)
{
int slot = (method - NV097_SET_VIEWPORT_OFFSET) / 4;
NV2A_DPRINTF("NV097_SET_VIEWPORT_OFFSET[%d] 0x%X\n", slot, parameter);
pg->vsh_constants[NV_IGRAPH_XF_XFCTX_VPOFF][slot] = parameter;
pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_VPOFF] = true;
}
@ -1809,12 +1820,14 @@ DEF_METHOD_INC(NV097, SET_VIEWPORT_OFFSET)
DEF_METHOD_INC(NV097, SET_POINT_PARAMS)
{
int slot = (method - NV097_SET_POINT_PARAMS) / 4;
NV2A_DPRINTF("NV097_SET_POINT_PARAMS[%d] 0x%X\n", slot, parameter);
pg->point_params[slot] = *(float *)&parameter; /* FIXME: Where? */
}
DEF_METHOD_INC(NV097, SET_EYE_POSITION)
{
int slot = (method - NV097_SET_EYE_POSITION) / 4;
NV2A_DPRINTF("NV097_SET_EYE_POSITION[%d] 0x%X\n", slot, parameter);
pg->vsh_constants[NV_IGRAPH_XF_XFCTX_EYEP][slot] = parameter;
pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_EYEP] = true;
}
@ -1822,30 +1835,35 @@ DEF_METHOD_INC(NV097, SET_EYE_POSITION)
DEF_METHOD_INC(NV097, SET_COMBINER_FACTOR0)
{
int slot = (method - NV097_SET_COMBINER_FACTOR0) / 4;
NV2A_DPRINTF("NV097_SET_COMBINER_FACTOR0[%d] 0x%X\n", slot, parameter);
pgraph_reg_w(pg, NV_PGRAPH_COMBINEFACTOR0 + slot*4, parameter);
}
DEF_METHOD_INC(NV097, SET_COMBINER_FACTOR1)
{
int slot = (method - NV097_SET_COMBINER_FACTOR1) / 4;
NV2A_DPRINTF("NV097_SET_COMBINER_FACTOR1[%d] 0x%X\n", slot, parameter);
pgraph_reg_w(pg, NV_PGRAPH_COMBINEFACTOR1 + slot*4, parameter);
}
DEF_METHOD_INC(NV097, SET_COMBINER_ALPHA_OCW)
{
int slot = (method - NV097_SET_COMBINER_ALPHA_OCW) / 4;
NV2A_DPRINTF("NV097_SET_COMBINER_ALPHA_OCW[%d] 0x%X\n", slot, parameter);
pgraph_reg_w(pg, NV_PGRAPH_COMBINEALPHAO0 + slot*4, parameter);
}
DEF_METHOD_INC(NV097, SET_COMBINER_COLOR_ICW)
{
int slot = (method - NV097_SET_COMBINER_COLOR_ICW) / 4;
NV2A_DPRINTF("SET_COMBINER_COLOR_ICW[%d] 0x%X\n", slot, parameter);
pgraph_reg_w(pg, NV_PGRAPH_COMBINECOLORI0 + slot*4, parameter);
}
DEF_METHOD_INC(NV097, SET_VIEWPORT_SCALE)
{
int slot = (method - NV097_SET_VIEWPORT_SCALE) / 4;
NV2A_DPRINTF("SET_VIEWPORT_SCALE[%d] 0x%X\n", slot, parameter);
pg->vsh_constants[NV_IGRAPH_XF_XFCTX_VPSCL][slot] = parameter;
pg->vsh_constants_dirty[NV_IGRAPH_XF_XFCTX_VPSCL] = true;
}
@ -1856,6 +1874,8 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_PROGRAM)
int program_load = PG_GET_MASK(NV_PGRAPH_CHEOPS_OFFSET,
NV_PGRAPH_CHEOPS_OFFSET_PROG_LD_PTR);
NV2A_DPRINTF("NV097_SET_TRANSFORM_PROGRAM[%d][%d] 0x%X\n", program_load,
slot, parameter);
assert(program_load < NV2A_MAX_TRANSFORM_PROGRAM_LENGTH);
pg->program_data[program_load][slot%4] = parameter;
@ -1872,6 +1892,8 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_CONSTANT)
int slot = (method - NV097_SET_TRANSFORM_CONSTANT) / 4;
int const_load = PG_GET_MASK(NV_PGRAPH_CHEOPS_OFFSET,
NV_PGRAPH_CHEOPS_OFFSET_CONST_LD_PTR);
NV2A_DPRINTF("NV097_SET_TRANSFORM_CONSTANT[%d][%d] 0x%X\n", const_load,
slot % 4, parameter);
assert(const_load < NV2A_VERTEXSHADER_CONSTANTS);
// VertexShaderConstant *constant = &pg->constants[const_load];
@ -1888,6 +1910,7 @@ DEF_METHOD_INC(NV097, SET_TRANSFORM_CONSTANT)
DEF_METHOD_INC(NV097, SET_VERTEX3F)
{
int slot = (method - NV097_SET_VERTEX3F) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX3F[%d] 0x%X\n", slot, parameter);
VertexAttribute *attribute =
&pg->vertex_attributes[NV2A_VERTEX_ATTR_POSITION];
pgraph_allocate_inline_buffer_vertices(pg, NV2A_VERTEX_ATTR_POSITION);
@ -1902,6 +1925,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX3F)
DEF_METHOD_INC(NV097, SET_BACK_LIGHT_AMBIENT_COLOR)
{
int slot = (method - NV097_SET_BACK_LIGHT_AMBIENT_COLOR) / 4;
NV2A_DPRINTF("NV097_SET_BACK_LIGHT_AMBIENT_COLOR 0x%X\n", parameter);
unsigned int part = NV097_SET_BACK_LIGHT_AMBIENT_COLOR / 4 + slot % 16;
slot /= 16; /* [Light index] */
assert(slot < 8);
@ -1940,55 +1964,65 @@ DEF_METHOD_INC(NV097, SET_LIGHT_AMBIENT_COLOR)
switch(part * 4) {
case NV097_SET_LIGHT_AMBIENT_COLOR ...
NV097_SET_LIGHT_AMBIENT_COLOR + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_AMBIENT_COLOR 0x%X\n", parameter);
part -= NV097_SET_LIGHT_AMBIENT_COLOR / 4;
pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_AMB + slot*6][part] = parameter;
pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_AMB + slot*6] = true;
break;
case NV097_SET_LIGHT_DIFFUSE_COLOR ...
NV097_SET_LIGHT_DIFFUSE_COLOR + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_DIFFUSE_COLOR 0x%X\n", parameter);
part -= NV097_SET_LIGHT_DIFFUSE_COLOR / 4;
pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_DIF + slot*6][part] = parameter;
pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_DIF + slot*6] = true;
break;
case NV097_SET_LIGHT_SPECULAR_COLOR ...
NV097_SET_LIGHT_SPECULAR_COLOR + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_SPECULAR_COLOR 0x%X\n", parameter);
part -= NV097_SET_LIGHT_SPECULAR_COLOR / 4;
pg->ltctxb[NV_IGRAPH_XF_LTCTXB_L0_SPC + slot*6][part] = parameter;
pg->ltctxb_dirty[NV_IGRAPH_XF_LTCTXB_L0_SPC + slot*6] = true;
break;
case NV097_SET_LIGHT_LOCAL_RANGE:
NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_RANGE 0x%X\n", parameter);
pg->ltc1[NV_IGRAPH_XF_LTC1_r0 + slot][0] = parameter;
pg->ltc1_dirty[NV_IGRAPH_XF_LTC1_r0 + slot] = true;
break;
case NV097_SET_LIGHT_INFINITE_HALF_VECTOR ...
NV097_SET_LIGHT_INFINITE_HALF_VECTOR + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_INFINITE_HALF_VECTOR 0x%X\n", parameter);
part -= NV097_SET_LIGHT_INFINITE_HALF_VECTOR / 4;
pg->light_infinite_half_vector[slot][part] = *(float*)&parameter;
break;
case NV097_SET_LIGHT_INFINITE_DIRECTION ...
NV097_SET_LIGHT_INFINITE_DIRECTION + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_INFINITE_DIRECTION 0x%X\n", parameter);
part -= NV097_SET_LIGHT_INFINITE_DIRECTION / 4;
pg->light_infinite_direction[slot][part] = *(float*)&parameter;
break;
case NV097_SET_LIGHT_SPOT_FALLOFF ...
NV097_SET_LIGHT_SPOT_FALLOFF + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_SPOT_FALLOFF 0x%X\n", parameter);
part -= NV097_SET_LIGHT_SPOT_FALLOFF / 4;
pg->ltctxa[NV_IGRAPH_XF_LTCTXA_L0_K + slot*2][part] = parameter;
pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_L0_K + slot*2] = true;
break;
case NV097_SET_LIGHT_SPOT_DIRECTION ...
NV097_SET_LIGHT_SPOT_DIRECTION + 12:
NV2A_DPRINTF("NV097_SET_LIGHT_SPOT_DIRECTION 0x%X\n", parameter);
part -= NV097_SET_LIGHT_SPOT_DIRECTION / 4;
pg->ltctxa[NV_IGRAPH_XF_LTCTXA_L0_SPT + slot*2][part] = parameter;
pg->ltctxa_dirty[NV_IGRAPH_XF_LTCTXA_L0_SPT + slot*2] = true;
break;
case NV097_SET_LIGHT_LOCAL_POSITION ...
NV097_SET_LIGHT_LOCAL_POSITION + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_POSITION 0x%X\n", parameter);
part -= NV097_SET_LIGHT_LOCAL_POSITION / 4;
pg->light_local_position[slot][part] = *(float*)&parameter;
break;
case NV097_SET_LIGHT_LOCAL_ATTENUATION ...
NV097_SET_LIGHT_LOCAL_ATTENUATION + 8:
NV2A_DPRINTF("NV097_SET_LIGHT_LOCAL_ATTENUATION 0x%X\n", parameter);
part -= NV097_SET_LIGHT_LOCAL_ATTENUATION / 4;
pg->light_local_attenuation[slot][part] = *(float*)&parameter;
break;
@ -2001,6 +2035,7 @@ DEF_METHOD_INC(NV097, SET_LIGHT_AMBIENT_COLOR)
DEF_METHOD_INC(NV097, SET_VERTEX4F)
{
int slot = (method - NV097_SET_VERTEX4F) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX4F[%d] 0x%X\n", slot, parameter);
VertexAttribute *attribute =
&pg->vertex_attributes[NV2A_VERTEX_ATTR_POSITION];
pgraph_allocate_inline_buffer_vertices(pg, NV2A_VERTEX_ATTR_POSITION);
@ -2220,6 +2255,8 @@ DEF_METHOD_INC(NV097, SET_SPECULAR_COLOR4UB)
DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_FORMAT)
{
int slot = (method - NV097_SET_VERTEX_DATA_ARRAY_FORMAT) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA_ARRAY_FORMAT[%d] 0x%X\n", slot,
parameter);
VertexAttribute *attr = &pg->vertex_attributes[slot];
attr->format = GET_MASK(parameter, NV097_SET_VERTEX_DATA_ARRAY_FORMAT_TYPE);
attr->count = GET_MASK(parameter, NV097_SET_VERTEX_DATA_ARRAY_FORMAT_SIZE);
@ -2267,6 +2304,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_FORMAT)
DEF_METHOD_INC(NV097, SET_VERTEX_DATA_ARRAY_OFFSET)
{
int slot = (method - NV097_SET_VERTEX_DATA_ARRAY_OFFSET) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA_ARRAY_OFFSET[%d] 0x%X\n", slot,
parameter);
pg->vertex_attributes[slot].dma_select = parameter & 0x80000000;
pg->vertex_attributes[slot].offset = parameter & 0x7fffffff;
@ -2495,6 +2534,7 @@ void pgraph_check_within_begin_end_block(PGRAPHState *pg)
DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT16)
{
NV2A_DPRINTF("ARRAY_ELEMENT16 0x%X\n", parameter);
pgraph_check_within_begin_end_block(pg);
if (pg->draw_arrays_length) {
@ -2508,6 +2548,7 @@ DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT16)
DEF_METHOD_NON_INC(NV097, ARRAY_ELEMENT32)
{
NV2A_DPRINTF("ARRAY_ELEMENT32 0x%X\n", parameter);
pgraph_check_within_begin_end_block(pg);
if (pg->draw_arrays_length) {
@ -2561,6 +2602,7 @@ DEF_METHOD(NV097, DRAW_ARRAYS)
DEF_METHOD_NON_INC(NV097, INLINE_ARRAY)
{
NV2A_DPRINTF("INLINE_ARRAY 0x%X\n", parameter);
pgraph_check_within_begin_end_block(pg);
assert(pg->inline_array_length < NV2A_MAX_BATCH_LENGTH);
pg->inline_array[pg->inline_array_length++] = parameter;
@ -2577,6 +2619,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA2F_M)
int slot = (method - NV097_SET_VERTEX_DATA2F_M) / 4;
unsigned int part = slot % 2;
slot /= 2;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA2F_M[%d][%d] 0x%X\n", slot, part,
parameter);
VertexAttribute *attribute = &pg->vertex_attributes[slot];
pgraph_allocate_inline_buffer_vertices(pg, slot);
attribute->inline_value[part] = *(float*)&parameter;
@ -2593,6 +2637,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4F_M)
int slot = (method - NV097_SET_VERTEX_DATA4F_M) / 4;
unsigned int part = slot % 4;
slot /= 4;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA4F_M[%d][%d] 0x%X\n", slot, part,
parameter);
VertexAttribute *attribute = &pg->vertex_attributes[slot];
pgraph_allocate_inline_buffer_vertices(pg, slot);
attribute->inline_value[part] = *(float*)&parameter;
@ -2604,6 +2650,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4F_M)
DEF_METHOD_INC(NV097, SET_VERTEX_DATA2S)
{
int slot = (method - NV097_SET_VERTEX_DATA2S) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA2S[%d] 0x%X\n", slot, parameter);
VertexAttribute *attribute = &pg->vertex_attributes[slot];
pgraph_allocate_inline_buffer_vertices(pg, slot);
attribute->inline_value[0] = (float)(int16_t)(parameter & 0xFFFF);
@ -2618,6 +2665,7 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA2S)
DEF_METHOD_INC(NV097, SET_VERTEX_DATA4UB)
{
int slot = (method - NV097_SET_VERTEX_DATA4UB) / 4;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA4UB[%d] 0x%X\n", slot, parameter);
VertexAttribute *attribute = &pg->vertex_attributes[slot];
pgraph_allocate_inline_buffer_vertices(pg, slot);
attribute->inline_value[0] = (parameter & 0xFF) / 255.0;
@ -2634,6 +2682,8 @@ DEF_METHOD_INC(NV097, SET_VERTEX_DATA4S_M)
int slot = (method - NV097_SET_VERTEX_DATA4S_M) / 4;
unsigned int part = slot % 2;
slot /= 2;
NV2A_DPRINTF("NV097_SET_VERTEX_DATA4S_M[%d][%d] 0x%X\n", slot, part,
parameter);
VertexAttribute *attribute = &pg->vertex_attributes[slot];
pgraph_allocate_inline_buffer_vertices(pg, slot);