launching vu1 programs

This commit is contained in:
h4570
2022-07-21 20:34:05 +02:00
parent 0b60aa0f6d
commit c8592e0c67
24 changed files with 178 additions and 242 deletions
@@ -40,8 +40,7 @@ class DynPipCore {
void renderPart(DynPipBag* data, const bool& frustumCull = true);
/** Get max vert count of VU1 qbuffer (for optimizations) */
u32 getMaxVertCountByParams(const bool& isSingleColor,
const bool& isLightingEnabled,
u32 getMaxVertCountByParams(const bool& isLightingEnabled,
const bool& isTextureEnabled);
/**
@@ -1,47 +0,0 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include "./bag/dynpip_bag.hpp"
namespace Tyra {
class DynPipQBuffer {
public:
DynPipQBuffer();
~DynPipQBuffer();
void setMaxVertCount(const u32& count);
DynPipBag* bag;
Vec4* verticesFrom;
Vec4* verticesTo;
Vec4* stsFrom;
Vec4* stsTo;
Vec4* normalsFrom;
Vec4* normalsTo;
/** Size per frame */
u32 size;
void print() const;
void print(const char* name) const;
void print(const std::string& name) const { print(name.c_str()); }
std::string getPrint(const char* name = nullptr) const;
private:
u32 maxVertCount;
};
} // namespace Tyra
@@ -25,16 +25,10 @@ class DynPipRenderer {
void reinitVU1();
// DynPipQBuffer* getBuffer();
void sendObjectData(DynPipBag* bag, M4x4* mvp,
RendererCoreTextureBuffers* texBuffers) const;
// void setMaxVertCount(const u32& count);
// void setInfo(PipelineInfoBag* bag);
// void render(DynPipQBuffer* buffer);
void render(DynPipBag* bag);
void clearLastProgramName();
@@ -46,9 +40,8 @@ class DynPipRenderer {
void uploadPrograms();
void setDoubleBuffer();
// void addBufferDataToPacket(DynPipVU1Program* program, DynPipQBuffer*
// buffer); void sendPacket();
// DynPipQBuffer buffers[2];
void addBufferDataToPacket(DynPipVU1Program* program, DynPipBag* bag);
void sendPacket();
packet2_t* packets[2];
packet2_t* programsPacket;
@@ -13,7 +13,7 @@
#include "./dynpip_program_name.hpp"
#include "renderer/core/paths/path1/vu1_program.hpp"
#include "./programs/dynpip_vu1_shared_defines.h"
#include "./dynpip_qbuffer.hpp"
#include "./bag/dynpip_bag.hpp"
namespace Tyra {
@@ -28,11 +28,9 @@ class DynPipVU1Program : public VU1Program {
const DynPipProgramName& getName() const;
u16 getMaxVertCount(const bool& singleColorEnabled,
const u16& vu1DBufferSize) const;
u16 getMaxVertCount(const u16& vu1DBufferSize) const;
void addBufferDataToPacket(packet2_t* packet, DynPipQBuffer* buffer,
prim_t* prim);
void addBufferDataToPacket(packet2_t* packet, DynPipBag* bag, prim_t* prim);
protected:
DynPipProgramName name;
@@ -40,10 +38,10 @@ class DynPipVU1Program : public VU1Program {
u32 destinationAddress, reglist;
virtual void addProgramQBufferDataToPacket(packet2_t* packet,
DynPipQBuffer* qbuffer) const = 0;
DynPipBag* bag) const = 0;
private:
void addStandardBufferDataToPacket(packet2_t* packet, DynPipQBuffer* buffer,
void addStandardBufferDataToPacket(packet2_t* packet, DynPipBag* bag,
prim_t* prim);
};
@@ -22,8 +22,7 @@ class DynPipCVU1Program : public DynPipVU1Program {
~DynPipCVU1Program();
std::string getStringName() const;
void addProgramQBufferDataToPacket(packet2_t* packet,
DynPipQBuffer* qbuffer) const;
void addProgramQBufferDataToPacket(packet2_t* packet, DynPipBag* bag) const;
};
} // namespace Tyra
@@ -22,8 +22,7 @@ class DynPipDVU1Program : public DynPipVU1Program {
~DynPipDVU1Program();
std::string getStringName() const;
void addProgramQBufferDataToPacket(packet2_t* packet,
DynPipQBuffer* qbuffer) const;
void addProgramQBufferDataToPacket(packet2_t* packet, DynPipBag* bag) const;
};
} // namespace Tyra
@@ -22,8 +22,7 @@ class DynPipTCVU1Program : public DynPipVU1Program {
~DynPipTCVU1Program();
std::string getStringName() const;
void addProgramQBufferDataToPacket(packet2_t* packet,
DynPipQBuffer* qbuffer) const;
void addProgramQBufferDataToPacket(packet2_t* packet, DynPipBag* bag) const;
};
} // namespace Tyra
@@ -22,8 +22,7 @@ class DynPipTDVU1Program : public DynPipVU1Program {
~DynPipTDVU1Program();
std::string getStringName() const;
void addProgramQBufferDataToPacket(packet2_t* packet,
DynPipQBuffer* qbuffer) const;
void addProgramQBufferDataToPacket(packet2_t* packet, DynPipBag* bag) const;
};
} // namespace Tyra
@@ -14,10 +14,19 @@
namespace Tyra {
enum DynPipFrustumCulling {
DynPipFrustumCulling_None = 0,
DynPipFrustumCulling_Simple = 1,
DynPipFrustumCulling_Precise = 2,
};
class DynPipOptions : public PipelineOptions {
public:
DynPipOptions() {}
~DynPipOptions() {}
/** Default: Simple */
DynPipFrustumCulling frustumCulling;
};
} // namespace Tyra