glsl: Implement transform feedback

This commit is contained in:
ameerj 2021-06-02 00:33:03 -04:00
parent 31147ffe69
commit f4799e8fa1
4 changed files with 76 additions and 18 deletions

View file

@ -30,6 +30,12 @@ struct Program;
namespace Shader::Backend::GLSL {
struct GenericElementInfo {
std::string name{};
u32 first_element{};
u32 num_components{};
};
class EmitContext {
public:
explicit EmitContext(IR::Program& program, Bindings& bindings, const Profile& profile_,
@ -149,6 +155,7 @@ public:
std::vector<u32> image_buffer_bindings;
std::vector<u32> texture_bindings;
std::vector<u32> image_bindings;
std::array<std::array<GenericElementInfo, 4>, 32> output_generics{};
bool uses_y_direction{};
bool uses_cc_carry{};
@ -157,6 +164,7 @@ private:
void SetupExtensions(std::string& header);
void DefineConstantBuffers(Bindings& bindings);
void DefineStorageBuffers(Bindings& bindings);
void DefineGenericOutput(size_t index, u32 invocations);
void DefineHelperFunctions();
void SetupImages(Bindings& bindings);
};