mirror of
https://github.com/hyprwm/aquamarine.git
synced 2025-12-20 04:40:12 +01:00
renderer: ensure same program is used once
ensure we only call glUseProgram on same program once.
This commit is contained in:
parent
ea02583af6
commit
30087dcda2
2 changed files with 10 additions and 1 deletions
|
|
@ -249,6 +249,13 @@ std::optional<std::vector<std::pair<uint64_t, bool>>> CDRMRenderer::getModsForFo
|
|||
return result;
|
||||
}
|
||||
|
||||
void CDRMRenderer::useProgram(GLuint prog) {
|
||||
if (m_currentProgram == prog)
|
||||
return;
|
||||
|
||||
GLCALL(glUseProgram(prog));
|
||||
}
|
||||
|
||||
bool CDRMRenderer::initDRMFormats() {
|
||||
std::vector<EGLint> formats;
|
||||
|
||||
|
|
@ -1004,7 +1011,7 @@ CDRMRenderer::SBlitResult CDRMRenderer::blit(SP<IBuffer> from, SP<IBuffer> to, S
|
|||
if (!intermediateBuf.empty())
|
||||
GLCALL(glTexImage2D(fromTex.target, 0, PIXEL_BUFFER_FORMAT, fromDma.size.x, fromDma.size.y, 0, PIXEL_BUFFER_FORMAT, GL_UNSIGNED_BYTE, intermediateBuf.data()));
|
||||
|
||||
GLCALL(glUseProgram(SHADER.program));
|
||||
useProgram(SHADER.program);
|
||||
GLCALL(glDisable(GL_BLEND));
|
||||
GLCALL(glDisable(GL_SCISSOR_TEST));
|
||||
|
||||
|
|
|
|||
|
|
@ -200,6 +200,8 @@ namespace Aquamarine {
|
|||
bool initDRMFormats();
|
||||
std::optional<std::vector<std::pair<uint64_t, bool>>> getModsForFormat(EGLint format);
|
||||
bool hasModifiers = false;
|
||||
void useProgram(GLuint prog);
|
||||
GLuint m_currentProgram = 0;
|
||||
|
||||
Hyprutils::Memory::CWeakPointer<CBackend> backend;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue