-
Notifications
You must be signed in to change notification settings - Fork 467
Add FlxGraphic.freeImageBuffer (dump) #3345
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
base: dev
Are you sure you want to change the base?
Conversation
If you're not already aware, the previous dump/undump fields were just removed in flixel 6.0.0, here: #3059 I still don't fully understand the implications of graphic dumping, but the idea was to remove the previous fields that did nothing, and then add them back with actual functionality later on, so people know to remove them from their project to avoid unintended behavior (not that anyone should have been using them) So this is gonna be a post-6.0.0 feature, but pointing it at release6 is the right move |
I was waiting for that to get merged to avoid any potential conflicts
In short, OpenFL I think a lot of fuss could be avoided simply by using names other than |
this all makes sense to me, thanks for the info |
Was this meant to be closed? |
This was closed automatically when I merged and deleted the release 6 branch. I didn't know that would happen, try pointing it at dev |
e1e40ae
to
7c82e7e
Compare
random thought: rather than loading a graphic, and disposing it. what if we just had sprite.loadVRamGraphic that did this for you, and disallowed the |
I think that'd be nice to have more fine grain control over what gets dumped and what doesn't. Though while this would work with sprites, what about frame collections for example? They manage graphics by themselves and that's often where you would even come across a graphic big enough to decrease a significant amount of memory.
Not sure why you'd hide the bitmap, some functions like |
Although I will note that I'm not sure if I'm too happy with how the Maybe adding a new optional arg to |
Atlases and frame collections are a good example of places where it makes sense that bitmap editing features should be "opt-in"
Didn't think about that, we could put an abstract over Bitmap and disable certain methods, but that could get pretty hairy
Not a fan of that, tbh
In cases where someone passed the method around, yes, but I'm guilty of doing this in minor versions. the safest way to to add another method |
I still don't understand why you'd hide it in the first place. OpenFL will already prevent you from using drawing methods on hardware bitmaps by just returning early and doing nothing. Maybe it'd be best for the scope of this PR to just be reduced to adding the |
This reverts commit 82581df.
Any updates on this? |
I'm still not quite sure on how to make Flixel play nice with texture only bitmaps. We could add additional methods to As Geokureli mentioned:
My initial thought was to just automatically dump all frame collection's graphics but I believe that would break FlxFilterFrames. I guess we could call |
I think my entire issue with this is the wording and the clarity. I do think we should have a way to clear unnecessary ram, but the feature should be opt in, to avoid breaking any existing code. I just find it confusing that we are calling I have a feeling we'll be renaming this again, soon, but honestly this is a simple feature that people could use immediately and see benefits from, so maybe I should just merge it? I'd still love to have a name that better conveyed the intended use and consequences: To make a FlxGraphic only use VRAM at the cost of not allowing its data to be edited |
Makes sense, though I still think it'd be nice for Flixel to take advantage of this internally at some point in the future.
I guess this is a design flaw with the Flash/OpenFL API. There's two dispose methods: I definitely struggled with the name for the method. LMK if you have any suggestions.
IMO there's no need to rush this. It's mainly just a helper method to give more visibility. Anyone who's looking to implement this themselves can currently just do Flixel and OpenFL are definitely in a weird situation here. I think the standard for game engines is to have different classes for software and hardware textures. OpenFL/Flash has this ( |
Fair enough. gonna move this to 6.2 |
Adds the feature described in #3034. I think it might also be possible to add undumping, but I'd have to play around and confirm.
One concern I have is about the naming, imo I feel as if
dump
isn't very descriptive and there's also deprecatedcanBeDumped
andundump()
fields that aren't related to this.Also, the original issue mentions:
Maybe there could be a compile flag (
FLX_GRAPHIC_DEFAULT_DUMP
?) or a variable that decides whether the graphics should be automatically dumped