1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-13 13:31:48 +00:00

Metal: Add MetalFX upscaling support

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
Stuart Carnie
2024-11-24 09:11:43 +11:00
parent bdf625bd54
commit 11dc4f2e5e
36 changed files with 1180 additions and 48 deletions

View File

@@ -223,6 +223,47 @@ public:
Vector<uint8_t> buffer_get_data(RID p_buffer, uint32_t p_offset = 0, uint32_t p_size = 0); // This causes stall, only use to retrieve large buffers for saving.
Error buffer_get_data_async(RID p_buffer, const Callable &p_callback, uint32_t p_offset = 0, uint32_t p_size = 0);
private:
/******************/
/**** CALLBACK ****/
/******************/
public:
enum CallbackResourceType {
CALLBACK_RESOURCE_TYPE_TEXTURE,
CALLBACK_RESOURCE_TYPE_BUFFER,
};
enum CallbackResourceUsage {
CALLBACK_RESOURCE_USAGE_NONE,
CALLBACK_RESOURCE_USAGE_COPY_FROM,
CALLBACK_RESOURCE_USAGE_COPY_TO,
CALLBACK_RESOURCE_USAGE_RESOLVE_FROM,
CALLBACK_RESOURCE_USAGE_RESOLVE_TO,
CALLBACK_RESOURCE_USAGE_UNIFORM_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_INDIRECT_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_TEXTURE_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_TEXTURE_BUFFER_READ_WRITE,
CALLBACK_RESOURCE_USAGE_STORAGE_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_STORAGE_BUFFER_READ_WRITE,
CALLBACK_RESOURCE_USAGE_VERTEX_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_INDEX_BUFFER_READ,
CALLBACK_RESOURCE_USAGE_TEXTURE_SAMPLE,
CALLBACK_RESOURCE_USAGE_STORAGE_IMAGE_READ,
CALLBACK_RESOURCE_USAGE_STORAGE_IMAGE_READ_WRITE,
CALLBACK_RESOURCE_USAGE_ATTACHMENT_COLOR_READ_WRITE,
CALLBACK_RESOURCE_USAGE_ATTACHMENT_DEPTH_STENCIL_READ_WRITE,
CALLBACK_RESOURCE_USAGE_MAX
};
struct CallbackResource {
RID rid;
CallbackResourceType type = CALLBACK_RESOURCE_TYPE_TEXTURE;
CallbackResourceUsage usage = CALLBACK_RESOURCE_USAGE_NONE;
};
Error driver_callback_add(RDD::DriverCallback p_callback, void *p_userdata, VectorView<CallbackResource> p_resources);
/*****************/
/**** TEXTURE ****/
/*****************/
@@ -855,6 +896,7 @@ private:
#endif
public:
RenderingDeviceDriver *get_device_driver() const { return driver; }
RenderingContextDriver *get_context_driver() const { return context; }
const RDD::Capabilities &get_device_capabilities() const { return driver->get_capabilities(); }