Skip to content

Commit

Permalink
Merge branch 'master' into render_scale_info
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabxx committed Jun 17, 2022
2 parents 74ac62a + 3a6907b commit a612e02
Show file tree
Hide file tree
Showing 10 changed files with 986 additions and 157 deletions.
20 changes: 17 additions & 3 deletions hw/xbox/nv2a/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,12 @@
#include <assert.h>

#ifdef CONFIG_RENDERDOC
#include <renderdoc_app.h>
#include "thirdparty/renderdoc_app.h"
#ifdef _WIN32
#include <libloaderapi.h>
#else
#include <dlfcn.h>
#endif

static RENDERDOC_API_1_1_2 *rdoc_api = NULL;
static int32_t renderdoc_capture_frames = 0;
Expand All @@ -43,7 +47,6 @@ static int32_t renderdoc_capture_frames = 0;
} \
} while(0)


static bool has_GL_GREMEDY_frame_terminator = false;
static bool has_GL_KHR_debug = false;

Expand Down Expand Up @@ -72,15 +75,26 @@ void gl_debug_initialize(void)

#ifdef CONFIG_RENDERDOC
const char *renderdoc_lib;
void* renderdoc;
#ifdef __APPLE__
renderdoc_lib = "librenderdoc.dylib";
#elif _WIN32
renderdoc_lib = "renderdoc.dll";
#else
renderdoc_lib = "librenderdoc.so";
#endif
void* renderdoc = dlopen(renderdoc_lib, RTLD_NOW | RTLD_NOLOAD);

#ifdef _WIN32
renderdoc = GetModuleHandleA(renderdoc_lib);
if (renderdoc) {
pRENDERDOC_GetAPI RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)GetProcAddress(
renderdoc, "RENDERDOC_GetAPI");
#else
renderdoc = dlopen(renderdoc_lib, RTLD_NOW | RTLD_NOLOAD);
if (renderdoc) {
pRENDERDOC_GetAPI RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)dlsym(
renderdoc, "RENDERDOC_GetAPI");
#endif
int ret = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_2,
(void **)&rdoc_api);
assert(ret == 1 && "Failed to retrieve RenderDoc API.");
Expand Down
9 changes: 5 additions & 4 deletions hw/xbox/nv2a/nv2a.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,7 @@ static const VMStateDescription vmstate_nv2a = {
VMSTATE_UINT64(pgraph.report_offset, NV2AState),
VMSTATE_UINT64(pgraph.dma_vertex_a, NV2AState),
VMSTATE_UINT64(pgraph.dma_vertex_b, NV2AState),
VMSTATE_UINT32(pgraph.primitive_mode, NV2AState),
VMSTATE_UINT32_2DARRAY(pgraph.program_data, NV2AState, NV2A_MAX_TRANSFORM_PROGRAM_LENGTH, VSH_TOKEN_SIZE),
VMSTATE_UINT32_2DARRAY(pgraph.vsh_constants, NV2AState, NV2A_VERTEXSHADER_CONSTANTS, 4),
VMSTATE_BOOL_ARRAY(pgraph.vsh_constants_dirty, NV2AState, NV2A_VERTEXSHADER_CONSTANTS),
Expand All @@ -501,10 +502,10 @@ static const VMStateDescription vmstate_nv2a = {
VMSTATE_UINT32(pgraph.inline_elements_length, NV2AState), // fixme
VMSTATE_UINT32_ARRAY(pgraph.inline_elements, NV2AState, NV2A_MAX_BATCH_LENGTH),
VMSTATE_UINT32(pgraph.inline_buffer_length, NV2AState), // fixme
VMSTATE_UINT32(pgraph.draw_arrays_length, NV2AState), // fixme
VMSTATE_UINT32(pgraph.draw_arrays_max_count, NV2AState), // fixme
// GLint gl_draw_arrays_start[1250]; // fixme
// GLsizei gl_draw_arrays_count[1250]; // fixme
VMSTATE_UINT32(pgraph.draw_arrays_length, NV2AState),
VMSTATE_UINT32(pgraph.draw_arrays_max_count, NV2AState),
VMSTATE_INT32_ARRAY(pgraph.gl_draw_arrays_start, NV2AState, 1250),
VMSTATE_INT32_ARRAY(pgraph.gl_draw_arrays_count, NV2AState, 1250),
VMSTATE_UINT32_ARRAY(pgraph.regs, NV2AState, 0x2000),
VMSTATE_UINT32(pmc.pending_interrupts, NV2AState),
VMSTATE_UINT32(pmc.enabled_interrupts, NV2AState),
Expand Down
3 changes: 2 additions & 1 deletion hw/xbox/nv2a/nv2a_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ typedef struct PGRAPHState {

hwaddr dma_vertex_a, dma_vertex_b;

unsigned int primitive_mode;
uint32_t primitive_mode;

bool enable_vertex_program_write;

Expand Down Expand Up @@ -374,6 +374,7 @@ typedef struct PGRAPHState {
unsigned int draw_arrays_min_start;
unsigned int draw_arrays_max_count;
/* FIXME: Unknown size, possibly endless, 1250 will do for now */
/* Keep in sync with size used in nv2a.c */
GLint gl_draw_arrays_start[1250];
GLsizei gl_draw_arrays_count[1250];
bool draw_arrays_prevent_connect;
Expand Down
8 changes: 8 additions & 0 deletions hw/xbox/nv2a/nv2a_regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,10 @@
#define NV_PGRAPH_WINDOWCLIPY5 0x00001A78
#define NV_PGRAPH_WINDOWCLIPY6 0x00001A7C
#define NV_PGRAPH_WINDOWCLIPY7 0x00001A80
#define NV_PGRAPH_ZCOMPRESSOCCLUDE 0x00001A84
# define NV_PGRAPH_ZCOMPRESSOCCLUDE_ZCLAMP_EN (1 << 4)
# define NV_PGRAPH_ZCOMPRESSOCCLUDE_ZCLAMP_EN_CULL 0
# define NV_PGRAPH_ZCOMPRESSOCCLUDE_ZCLAMP_EN_CLAMP 1
#define NV_PGRAPH_ZSTENCILCLEARVALUE 0x00001A88
#define NV_PGRAPH_ZCLIPMIN 0x00001A90
#define NV_PGRAPH_ZOFFSETBIAS 0x00001AA4
Expand Down Expand Up @@ -1205,6 +1209,10 @@
# define NV097_SET_TEXTURE_SET_BUMP_ENV_OFFSET 0x00001B3C
# define NV097_SET_SEMAPHORE_OFFSET 0x00001D6C
# define NV097_BACK_END_WRITE_SEMAPHORE_RELEASE 0x00001D70
# define NV097_SET_ZMIN_MAX_CONTROL 0x00001D78
# define NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_EN 0x000000F0
# define NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_EN_CULL 0
# define NV097_SET_ZMIN_MAX_CONTROL_ZCLAMP_EN_CLAMP 1
# define NV097_SET_ZSTENCIL_CLEAR_VALUE 0x00001D8C
# define NV097_SET_COLOR_CLEAR_VALUE 0x00001D90
# define NV097_CLEAR_SURFACE 0x00001D94
Expand Down
Loading

0 comments on commit a612e02

Please sign in to comment.