mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 14:03:40 +00:00
[client] egl/fsr: release consts
when no longer needed
This commit is contained in:
parent
5a2f34d71c
commit
06da52acfc
@ -39,6 +39,7 @@ typedef struct EGL_FilterFFXFSR1
|
|||||||
EGL_Shader * easu, * rcas;
|
EGL_Shader * easu, * rcas;
|
||||||
bool enable, active;
|
bool enable, active;
|
||||||
float sharpness;
|
float sharpness;
|
||||||
|
CountedBuffer * consts;
|
||||||
EGL_Uniform easuUniform[2], rcasUniform;
|
EGL_Uniform easuUniform[2], rcasUniform;
|
||||||
|
|
||||||
enum EGL_PixelFormat pixFmt;
|
enum EGL_PixelFormat pixFmt;
|
||||||
@ -120,13 +121,20 @@ static bool egl_filterFFXFSR1Init(EGL_Filter ** filter)
|
|||||||
goto error_rcas;
|
goto error_rcas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->consts = countedBufferNew(16 * sizeof(GLuint));
|
||||||
|
if (!this->consts)
|
||||||
|
{
|
||||||
|
DEBUG_ERROR("Failed to allocate consts buffer");
|
||||||
|
goto error_rcas;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
this->enable = option_get_bool("eglFilter", "ffxFSR");
|
this->enable = option_get_bool("eglFilter", "ffxFSR");
|
||||||
|
|
||||||
this->easuUniform[0].type = EGL_UNIFORM_TYPE_4UIV;
|
this->easuUniform[0].type = EGL_UNIFORM_TYPE_4UIV;
|
||||||
this->easuUniform[0].location =
|
this->easuUniform[0].location =
|
||||||
egl_shaderGetUniform(this->easu, "uConsts");
|
egl_shaderGetUniform(this->easu, "uConsts");
|
||||||
this->easuUniform[0].v = countedBufferNew(16 * sizeof(GLuint));
|
this->easuUniform[0].v = this->consts;
|
||||||
this->easuUniform[1].type = EGL_UNIFORM_TYPE_2F;
|
this->easuUniform[1].type = EGL_UNIFORM_TYPE_2F;
|
||||||
this->easuUniform[1].location =
|
this->easuUniform[1].location =
|
||||||
egl_shaderGetUniform(this->easu, "uOutRes");
|
egl_shaderGetUniform(this->easu, "uOutRes");
|
||||||
@ -139,7 +147,7 @@ static bool egl_filterFFXFSR1Init(EGL_Filter ** filter)
|
|||||||
if (!egl_framebufferInit(&this->easuFb))
|
if (!egl_framebufferInit(&this->easuFb))
|
||||||
{
|
{
|
||||||
DEBUG_ERROR("Failed to initialize the Easu framebuffer");
|
DEBUG_ERROR("Failed to initialize the Easu framebuffer");
|
||||||
goto error_rcas;
|
goto error_consts;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!egl_framebufferInit(&this->rcasFb))
|
if (!egl_framebufferInit(&this->rcasFb))
|
||||||
@ -160,6 +168,9 @@ static bool egl_filterFFXFSR1Init(EGL_Filter ** filter)
|
|||||||
error_easuFb:
|
error_easuFb:
|
||||||
egl_framebufferFree(&this->rcasFb);
|
egl_framebufferFree(&this->rcasFb);
|
||||||
|
|
||||||
|
error_consts:
|
||||||
|
countedBufferRelease(&this->consts);
|
||||||
|
|
||||||
error_rcas:
|
error_rcas:
|
||||||
egl_shaderFree(&this->rcas);
|
egl_shaderFree(&this->rcas);
|
||||||
|
|
||||||
@ -177,6 +188,7 @@ static void egl_filterFFXFSR1Free(EGL_Filter * filter)
|
|||||||
|
|
||||||
egl_shaderFree(&this->easu);
|
egl_shaderFree(&this->easu);
|
||||||
egl_shaderFree(&this->rcas);
|
egl_shaderFree(&this->rcas);
|
||||||
|
countedBufferRelease(&this->consts);
|
||||||
egl_framebufferFree(&this->easuFb);
|
egl_framebufferFree(&this->easuFb);
|
||||||
egl_framebufferFree(&this->rcasFb);
|
egl_framebufferFree(&this->rcasFb);
|
||||||
glDeleteSamplers(1, &this->sampler);
|
glDeleteSamplers(1, &this->sampler);
|
||||||
@ -327,7 +339,7 @@ static bool egl_filterFFXFSR1Setup(EGL_Filter * filter,
|
|||||||
|
|
||||||
this->easuUniform[1].f[0] = this->width;
|
this->easuUniform[1].f[0] = this->width;
|
||||||
this->easuUniform[1].f[1] = this->height;
|
this->easuUniform[1].f[1] = this->height;
|
||||||
ffxFsrEasuConst((uint32_t *) this->easuUniform[0].v->data, this->inWidth, this->inHeight,
|
ffxFsrEasuConst((uint32_t *)this->consts->data, this->inWidth, this->inHeight,
|
||||||
this->inWidth, this->inHeight, this->width, this->height);
|
this->inWidth, this->inHeight, this->width, this->height);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user