Hash :
1ea49a22
Author :
Date :
2023-10-13T11:28:41
Move uniform dirty bits to ProgramExecutable Rather than try to funnel them through Program and ProgramPipeline to the executable in the backend, just move them to ProgramExecutable in the front end. This fixes Dota Underlords at the same time due to not needing to set the Program dirty to propagate bits. Test: Dota Underlords Test: ProgramPipelineTest31.ProgramPipelineBindBufferRange Bug: b/299532942 Change-Id: Ic73c45608e22f89ca400ebf684f8cd287ed2f43a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4922969 Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
//
// Copyright 2017 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ProgramPipelineImpl.h: Defines the abstract rx::ProgramPipelineImpl class.
#ifndef LIBANGLE_RENDERER_PROGRAMPIPELINEIMPL_H_
#define LIBANGLE_RENDERER_PROGRAMPIPELINEIMPL_H_
#include "common/angleutils.h"
#include "libANGLE/ProgramPipeline.h"
namespace rx
{
class ContextImpl;
class ProgramPipelineImpl : public angle::NonCopyable
{
public:
ProgramPipelineImpl(const gl::ProgramPipelineState &state) : mState(state) {}
virtual ~ProgramPipelineImpl() {}
virtual void destroy(const gl::Context *context) {}
virtual angle::Result link(const gl::Context *context,
const gl::ProgramMergedVaryings &mergedVaryings,
const gl::ProgramVaryingPacking &varyingPacking);
virtual void onProgramUniformUpdate(gl::ShaderType shaderType) {}
virtual angle::Result onLabelUpdate(const gl::Context *context);
const gl::ProgramPipelineState &getState() const { return mState; }
protected:
const gl::ProgramPipelineState &mState;
};
} // namespace rx
#endif // LIBANGLE_RENDERER_PROGRAMPIPELINEIMPL_H_