-
Notifications
You must be signed in to change notification settings - Fork 6k
[Impeller] Allow for the specification of pipeline stage information at runtime. #33882
Conversation
|
The new ImpellerC flags may change but this portion of the work is good for review. |
zanderso
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
|
|
||
| namespace impeller { | ||
|
|
||
| static std::atomic_int32_t sValidationLogsDisabledCount = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C++ question: Is this because ValidationLog is a struct and so if this were a static member of ValidationLog it would be public?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right. But I don't see why that would be a problem either.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it were public, it would be exposing internal state in a non-OOP-y way.
| include_dirs = [ "$root_gen_dir/flutter" ] | ||
| } | ||
|
|
||
| flatbuffers("runtime_stage_flatbuffers") { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI @chingjun
|
This is waiting on me patching the licenses for Flatbuffers and updating the buildroot dep. |
…at runtime. Towards implementing the FragmentProgram API in Impeller. Specifies an Impeller specific format for data the renderer can use to create pipelines with user supplied shader stages at runtime. The data is in the form of a flatbuffer with a known schema. This patch implements the wire format, creating and loading the program payloads, and creating pipeline state objects using these payloads. If the user supplied SPIRV intended for the older API, the loader will reject this invalid payload. This is probably not going to be too much of an issue because the FragmentProgram API will probably be modified to only allow buffers loaded from asset managers. But still, in the meantime, I am using the old API to pass these new buffers. Fixes flutter/flutter#104750 Fixes flutter/flutter#105542 Towards resolving flutter/flutter#102853
09d1ef6 to
5ed1935
Compare
…rmation at runtime. (flutter/engine#33882)
…at runtime. (flutter#33882) Towards implementing the FragmentProgram API in Impeller. Specifies an Impeller specific format for data the renderer can use to create pipelines with user supplied shader stages at runtime. The data is in the form of a flatbuffer with a known schema. This patch implements the wire format, creating and loading the program payloads, and creating pipeline state objects using these payloads. If the user supplied SPIRV intended for the older API, the loader will reject this invalid payload. This is probably not going to be too much of an issue because the FragmentProgram API will probably be modified to only allow buffers loaded from asset managers. But still, in the meantime, I am using the old API to pass these new buffers. Fixes flutter/flutter#104750 Fixes flutter/flutter#105542 Towards resolving flutter/flutter#102853
Towards implementing the FragmentProgram API in Impeller.
Specifies an Impeller specific format for data the renderer can use to create
pipelines with user supplied shader stages at runtime.
The data is in the form of a flatbuffer with a known schema.
This patch implements the wire format, creating and loading the program
payloads, and creating pipeline state objects using these payloads.
If the user supplied SPIRV intended for the older API, the loader will reject
this invalid payload. This is probably not going to be too much of an issue
because the FragmentProgram API will probably be modified to only allow buffers
loaded from asset managers. But still, in the meantime, I am using the old API
to pass these new buffers.
Fixes flutter/flutter#104750
Fixes flutter/flutter#105542
Towards resolving flutter/flutter#102853