Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GE debugger: Allow displaying two tabs at once, separate DL view #15839

Merged
merged 13 commits into from
Aug 16, 2022

Conversation

hrydgard
Copy link
Owner

@hrydgard hrydgard commented Aug 14, 2022

Should really make a new cross platform GE debugger somehow, but in the meantime, this.

This lets you show two tabs at the same time, and also moves the display list view out of the tabs. Additionally it reorders things so that parameters critical for debugging of tricky framebuffer texturing effects are at the top (this is going to be the most common use going forward, it seems).

See how the core texturing and framebuffer parameters are visible at the same time in the screenshot (Note: There's something wrong with the DPI scaling of the main screenshot, I'll deal with that separately):

image

@hrydgard hrydgard added User Interface PPSSPP's own user interface / UX Debugger labels Aug 14, 2022
@hrydgard hrydgard added this to the v1.14.0 milestone Aug 14, 2022
@@ -111,7 +111,7 @@ bool NotifyCommand(u32 pc) {
}

bool process = true;
if (cmd == GE_CMD_PRIM || cmd == GE_CMD_BEZIER || cmd == GE_CMD_SPLINE) {
if (cmd == GE_CMD_PRIM || cmd == GE_CMD_BEZIER || cmd == GE_CMD_SPLINE || cmd == GE_CMD_TRANSFERSTART) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it might be fair to call it a prim if we highlight the area it's uploading to and it actually affects the target framebuffer. Otherwise, I think this is confusing. I think it might make sense to add a new step type, but a LOT of people use the GE debugger to rom hack and investigate graphics, and seeing a bunch of prim steps that highlight nothing is a confusing experience.

-[Unknown]

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm gonna revert this for now. I do want the functionality though so will do it in some optional way.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it can be under Breakpoints, "Break on block transfers"? I would kinda want some way to know when it's starting a list and a memcpy happened too, because I agree this sort of thing is useful when debugging. I'm most interested in block transferred from/to the render target (color, depth), although textures are interesting too (but less so, depending.)

-[Unknown]

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, could be okay there. Can also think of some other additional break types that could be useful (break on through mode, for example, to skip to HUD/post processing after 3D in some games, for example).

Copy link
Collaborator

@unknownbrackets unknownbrackets Aug 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, you can already break on the vertex type changing. It'd be nice to filter those by bits, that feels more like a condition on the existing register-based breakpoints.

Edit: then again, I don't always remember exactly the bit for throughmode, so something dedicated for that could be nice. Ideally, it'd split out the various bit fields for registers to individually breakpoint...

-[Unknown]

@unknownbrackets
Copy link
Collaborator

I'm sure there will always be more problems with depth, stencil, splines, etc. I don't think the most visible problem now will always be the One True Problem. That said, I don't really care that much about the reordering, I just don't agree with that assertion.

This really looks like one of those screenshots now people use to joke about why not to let engineers design UIs, now. Not that it looked amazing before... though I wish the list change was at least more optional since it seems like it'll make it harder to actual read the list.

-[Unknown]

@hrydgard
Copy link
Owner Author

Well, out of the graphics problems that are next on my mental list, most are fb/texture oriented, and the drive for this is entirely to be able to see both fb and tex without clicking back and forth. But yeah it doesn't fully hold generally of course.

I agree it looks horrible but it does help me. You're right though that the display list view gets worse, I'll solve that with an option or something before this goes in.

@unknownbrackets
Copy link
Collaborator

Let me try making it so the panel can be moved...

-[Unknown]

@unknownbrackets
Copy link
Collaborator

Okay created #15842 (targeting this branch), which would allow me to keep the display list where I want it.

-[Unknown]

@hrydgard
Copy link
Owner Author

OK, merged your (rather excellent!) change, and reverted the blocktransfer-as-prim thing, though something in that direction is useful so will come later in some optional or clearer (highlighting, if targeting the current framebuffer maybe?) form.

@hrydgard hrydgard merged commit 36e7b78 into master Aug 16, 2022
@hrydgard hrydgard deleted the ge-debugger-twopane branch August 16, 2022 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Debugger User Interface PPSSPP's own user interface / UX
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants