Progress of new backend API

@zhangxm
On which iOS devices all this will be tested, confirmed and optimized?
I believe you have all of them to profile and done all thing right. Right?

Obviously, if compare for example: iPhone 6 and iPhone 6s - the iPhone 6S has a faster hardware, so all this needs to test on iPhone 6 only(as minimum), but ideally need to test and confirm stable work on all other devices, which is even faster but share same model type.

And this list is:


iPhone 5S and ideally to confirm on iPhone SE
iPhone 6 and to confirm on iPhone 6S and/or iPhone 7 and/or iPhone 8
iPhone 6 Plus and to confirm on iPhone 6S Plus and/or iPhone 7 Plus and/or iPhone 8 Plus

iPhone X and to confirm on iPhone XS
iPhone XS Max
iPhone XR

iPad Air and to confirm on iPad Air 2 and/or on iPad (2017) and/or on iPad (2018)
iPad mini 2 and to confirm iPad mini 3 and on iPad mini 4

iPad Pro 9.7-inch
iPad Pro 10.5-inch
iPad Pro 12.9-inch

Iphone 5 or iphone 5c cannot have metal api, only a7 and above, 64 bit chips has.

Thanks, I forgot about this :smiley: minus a couple of devices.

@zhangxm Would you please clarify what you mean by “remove 3d related codes”. Would that mean we can’t use 3D at all with that specific release? How soon would it be before 3D related code is added again?

The reason I’m asking is that we have just decided to use 3D for certain aspects of our product (it’s a 2D product, but with a few 3D animations), but if it won’t be supported by the time it is released (mid-2019), then we need to re-evaluate our decision. Best case, we don’t use 3D and just do the animations in Spine, worst case, we switch to another engine (which I really would prefer not to do).

@cc_x Yep, i think i have to test on these devices after adapting to cocos2d-x. Sorry, i don’t have all the devices, but i think the community can help to test too.

@R101 we haven’t made the final decision to remove 3d, we may discuss it in another thread. I will create a new thread. And even we don’t make sure if it should be renamed v4 or a new 3.x. It will break some API, but it doesn’t bring more new features.

I created this thread to remove some codes when integrating metal.

@zhangxm Whenever you need any testing help, let me know.
I can test on whatever devices we have. (Android/iOS both)

Thats very bad, for quality profiling and optimizing you need a real device to do so in Xcode and quickly test/fix/improve anything. Am I talking about standard and obvious things?

@smitpatel88 thanks.
@cc_x i will test as more devices as i can, but i don’t have all the devices.

Update:

  • implement some basic feature of metal backend
  • can run the project, but nothing is drawn, i found the vertex data is correct, don’t know why

If somebody is metal expert, please help to fix it too.

Update:

the first metal test case can run, it is because i don’t set window width and height, then the view port size is 0. Currently, i just write metal shader by hand, not translate it to metal shader in runtime. It can polish the API more quickly.

3 Likes

Update:

GLSL shader works on metal backend. We are using glsl-optimizer to translate GLSL shader to metal shader. glsl-optimizer doesn’t translate GLSL builtin functions, we are fixing it.

4 Likes

Update: texture is supported in metal backend, texture array currently is not supported. And i created an issue to trace the progress of GLSL builtin functions supporting.

2 Likes

I think this is a standalone project which should not depend on cocos2d-x.
It’s cocos2d-x uses this module instead.
So autorelease stuff may not be in this project.

1 Like

It seems that this design doesn’t consider multi-thread usage.
There isn’t any concept of Fence, Event, Semaphore.

1 Like

@dumganhar it is part of cocos2d-x. For convenient, i use a separate repo when developing. I learned from mac and fixed it:

  • createXXX return an autoreleased object
  • newXXX return a not autoreleased object

Yep, multiple thread concept is not included now. I don’t know if it is needed, the first purpose is to support metal, and we can optimize it if it is needed.

Update: blending is supported on metal, and the API is simplified a bit. I will add more test case for it.

1 Like

Update:

  • texture can be used as color attachment
  • can update sub image of a texture
  • make stencil work correctly
  • make some API more meaningful
  • add more test cases
2 Likes

wow it seems like you are making terrific progress - thanks for the updates!!

We almost finish the backend API, and will start integrating it into cocos2d-x soon.

4 Likes