clang optimizes code differently with very likely or unlikely
conditions, so we add a `VERY` version of these macros, and we
make use of it for assertions.
- PR #8641 introduced a requirement for including Systrace.h that
wasn't covered by the header-check test.
- Make sure temp.cpp contains only one include
- Add a missing include for Package.h
- Add a manager class for handling external image and sampling
- The logic is to enable a slow path if the descriptor set
layout has external samplers and an external image has been
assigned to the corresponding descriptor set
- The slow path will deduce the format of the external image to
and create the corresponding YUV conversion if necessary.
- Clean-up VulkanPlatform
- Re-enable renderdiff test.
- Cache the mesa directory so that we're not spending time pulling
and compiling it.
- Move python prereqs into the script and use venv.
This change fixes a crash that occurs in ShaderCompilerService under a
certain condition described below.
Functions are called in the order described below.
1. `ShaderCompilerService::initialize(...)` is called when a new gl
program is created. There are cases whre the corresponding TickOp may
be still alive at the end of this method.
2. `OpenGLProgram::~OpenGLProgram()` is called when the program is
immediately destroyed without being used. This deletes gl.program.
3. `ShaderCompilerService::tick()` is called later, and it references
the dangling gl object `gl.program` in the lambda function, and it
crashes.
This change also includes refactoring the class `ShaderCompilerService`
to make code simpler and less error-prone.
TEST = Tested on Desktop, Android, and Web by running sample apps
BUGS = [394319326, 407090622]
Perfetto has significantly less overhead. The User facing API is
mostly unchanged:
Here are the differences:
- SYSTRACE_ENABLE() does nothing on ANDROID, initializes systraces on darwin.
- SYSTRACE_DISABLE() is removed.
- A new "gltfio" tag is added.
- SYSTRACE_TAG *must* be defined before including `utils/Systrace.h`
- `utils/Systrace.h` should not be used from a public header
- the new SYSTRACE_TAG_DISABLE disables systrace at compile time
For android a data source MUST be created in the perfetto config:
```
data_sources {
config {
name: "track_event"
track_event_config {
enabled_categories: ["filament", "jobsystem", "gltfio"]
disabled_categories: "*"
}
}
}
```
This can for example be added to AGI's custom/advanced config.
FIXES=[407572663]
was not updated when a texture was reassigned if !texture->textureHandleCanMutate().
This could cause a crash in FMaterialInstance::commit() since the old texture
binding was still in mTextureParameters but may have been destroyed.
When a swapchain is resized the FBO cache gets resets
which includes the framebuffer and renderpass objects.
This causes pipelines to be recreated instead of being
reused from the previous frames, causing stalls.
In the case of renderpasses there's no need to clear these
objects, since the state of the renderpass is the same, only
their refcount should be adjusted, fixing the issue mentioned
above.
Add priliminay implementations of CommandBuffer, RenderColor Attachment,
RenderPass encoders and web gpu queue. This is sufficient to render
background color on a surface using webgpu api's.
Attach MetalLayer to Native View same as vulkan and metal backend.
This change assumes native window is already a CAMetalLayer. This is no different
for IOS and Mac.
Implement stub implementations for different handles. This is a
place holder patch. These handles will be enhanced and used by webgpu
driver for backend implementations.
This function was created to make sure the swapchain
image was available before submitting the work to the GPU.
So the order of the process looked like
| Acquire | Begin | Record | Wait | Present | End |
After this change the expectation is that when the
swapchain acquires a new image it will also wait until
is actually available from the platform.
| Acquire | Begin | Record | Present | End |
In the case the image is not available, the expectation
is that the acquire will wait until it is and then start
processing the frame.
- Move utils functions to the right files
- Add conversion from vk formats to filament
- Refactor how to enable multiview and external sampler in
VulkanPlatform
- Make VuklanDescriptorSet and VuklanDescriptorSetLayout more
general to allow for mutability
- Reorder vulkan files in CMakeLists.txt to be sorted in
alphabetical order.