Progress of new backend API

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

Wow, That was Quick

@zhangxm Crashing for me when i tried running tests. See attachment

@kiranb47 i will take a look.

@kiranb47 it works for me and my co-worker. What’s your macOS version? And what’s the pixel format?

Mac Version: 10.14 Mojave. We tested in 2 Macs. A Mac Mini & a Mac Book Pro. How i find my device pixel format? I tried changing pixel formal in RootView, but still crashing