1#pragma once
2
3#include <basis/seadTypes.h>
4#include <gfx/seadDrawContext.h>
5#include <prim/seadRuntimeTypeInfo.h>
6#include <thread/seadCriticalSection.h>
7
8#include "common/aglShaderEnum.h"
9
10namespace agl {
11
12class RenderBuffer;
13class DisplayList;
14enum ShaderOptimizeType {};
15
16class DrawContext : public sead::DrawContext {
17 SEAD_RTTI_OVERRIDE(DrawContext, sead::DrawContext)
18public:
19 DrawContext();
20 ~DrawContext() override;
21
22 void setCommandBuffer(DisplayList* buffer);
23 void flushCommandBuffer();
24 void setBoundRenderBuffer(const RenderBuffer* buffer);
25 void barrierTexture(u32 flags);
26 void barrierShader(u32 flags);
27 bool isTextureDirty(u32 unused, s32 index) const;
28 void setTextureDirty(s32 index);
29 void changeShaderType(ShaderMode mode, ShaderOptimizeType optimizeType);
30 void setCommandBufferTemporary();
31
32private:
33 void* gap[5];
34 DisplayList* mCommandBuffer;
35 const RenderBuffer* mBoundRenderBuffer;
36 u8 _100;
37 ShaderMode mShaderMode;
38 u8 _102;
39 u8 _103;
40 u32 _104;
41 u32 _10c;
42 void* gap2[19];
43 long mTextureDirty;
44};
45
46} // namespace agl
47