mv stage tally -> shader tally;

This commit is contained in:
bjorn 2022-07-17 11:38:55 -07:00
parent 1946fbb540
commit c2dd7281cc
6 changed files with 18 additions and 17 deletions

View File

@ -170,8 +170,9 @@ StringEntry lovrStencilAction[] = {
StringEntry lovrTallyType[] = {
[TALLY_TIMER] = ENTRY("timer"),
[TALLY_SHADER] = ENTRY("shader"),
[TALLY_PIXEL] = ENTRY("pixel"),
[TALLY_STAGE] = ENTRY("stage"),
{ 0 }
};
StringEntry lovrTextureFeature[] = {
@ -680,7 +681,7 @@ static int l_lovrGraphicsGetFeatures(lua_State* L) {
lua_pushboolean(L, features.wireframe), lua_setfield(L, -2, "wireframe");
lua_pushboolean(L, features.depthClamp), lua_setfield(L, -2, "depthClamp");
lua_pushboolean(L, features.indirectDrawFirstInstance), lua_setfield(L, -2, "indirectDrawFirstInstance");
lua_pushboolean(L, features.stageTally), lua_setfield(L, -2, "stageTally");
lua_pushboolean(L, features.shaderTally), lua_setfield(L, -2, "shaderTally");
lua_pushboolean(L, features.float64), lua_setfield(L, -2, "float64");
lua_pushboolean(L, features.int64), lua_setfield(L, -2, "int64");
lua_pushboolean(L, features.int16), lua_setfield(L, -2, "int16");

View File

@ -35,7 +35,7 @@ static int l_lovrReadbackGetData(lua_State* L) {
case READBACK_TALLY: {
int count = (int) info->tally.count;
if (lovrTallyGetInfo(info->tally.object)->type == TALLY_STAGE) {
if (lovrTallyGetInfo(info->tally.object)->type == TALLY_SHADER) {
count *= 4; // The number of pipeline statistics that are tracked
}

View File

@ -454,8 +454,8 @@ void gpu_pipeline_destroy(gpu_pipeline* pipeline);
typedef enum {
GPU_TALLY_TIMER,
GPU_TALLY_PIXEL,
GPU_TALLY_STAGE
GPU_TALLY_SHADER,
GPU_TALLY_PIXEL
} gpu_tally_type;
typedef struct {
@ -605,7 +605,7 @@ typedef struct {
bool wireframe;
bool depthClamp;
bool indirectDrawFirstInstance;
bool stageTally;
bool shaderTally;
bool float64;
bool int64;
bool int16;

View File

@ -1372,15 +1372,15 @@ void gpu_pipeline_destroy(gpu_pipeline* pipeline) {
bool gpu_tally_init(gpu_tally* tally, gpu_tally_info* info) {
VkQueryType queryTypes[] = {
[GPU_TALLY_TIMER] = VK_QUERY_TYPE_TIMESTAMP,
[GPU_TALLY_PIXEL] = VK_QUERY_TYPE_OCCLUSION,
[GPU_TALLY_STAGE] = VK_QUERY_TYPE_PIPELINE_STATISTICS
[GPU_TALLY_SHADER] = VK_QUERY_TYPE_PIPELINE_STATISTICS,
[GPU_TALLY_PIXEL] = VK_QUERY_TYPE_OCCLUSION
};
VkQueryPoolCreateInfo createInfo = {
.sType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
.queryType = queryTypes[info->type],
.queryCount = info->count,
.pipelineStatistics = info->type == GPU_TALLY_STAGE ? (
.pipelineStatistics = info->type == GPU_TALLY_SHADER ? (
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT |
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT |
@ -1878,7 +1878,7 @@ bool gpu_init(gpu_config* config) {
config->features->wireframe = enable->fillModeNonSolid = supports->fillModeNonSolid;
config->features->depthClamp = enable->depthClamp = supports->depthClamp;
config->features->indirectDrawFirstInstance = enable->drawIndirectFirstInstance = supports->drawIndirectFirstInstance;
config->features->stageTally = enable->pipelineStatisticsQuery = supports->pipelineStatisticsQuery;
config->features->shaderTally = enable->pipelineStatisticsQuery = supports->pipelineStatisticsQuery;
config->features->float64 = enable->shaderFloat64 = supports->shaderFloat64;
config->features->int64 = enable->shaderInt64 = supports->shaderInt64;
config->features->int16 = enable->shaderInt16 = supports->shaderInt16;

View File

@ -2745,7 +2745,7 @@ Readback* lovrReadbackCreate(const ReadbackInfo* info) {
break;
case READBACK_TALLY:
lovrRetain(info->tally.object);
uint32_t stride = info->tally.object->info.type == TALLY_STAGE ? 16 : 4;
uint32_t stride = info->tally.object->info.type == TALLY_SHADER ? 16 : 4;
readback->size = info->tally.count * stride;
readback->data = malloc(readback->size);
lovrAssert(readback->data, "Out of memory");
@ -2820,7 +2820,7 @@ Tally* lovrTallyCreate(const TallyInfo* info) {
lovrCheck(info->count > 0, "Tally count must be greater than zero");
lovrCheck(info->count <= 4096, "Maximum Tally count is 4096");
lovrCheck(info->views <= state.limits.renderSize[2], "Tally view count can not exceed the maximum view count");
lovrCheck(info->type != TALLY_STAGE || state.features.stageTally, "This GPU does not support the 'stage' Tally type");
lovrCheck(info->type != TALLY_SHADER || state.features.shaderTally, "This GPU does not support the 'shader' Tally type");
Tally* tally = calloc(1, sizeof(Tally) + gpu_sizeof_tally());
lovrAssert(tally, "Out of memory");
tally->ref = 1;
@ -4872,7 +4872,7 @@ void lovrPassCopyTallyToBuffer(Pass* pass, Tally* tally, Buffer* buffer, uint32_
lovrTallyResolve(tally, srcIndex, count, buffer->gpu, dstOffset, pass->stream);
trackBuffer(pass, buffer, GPU_PHASE_SHADER_COMPUTE, GPU_CACHE_STORAGE_WRITE);
} else {
uint32_t stride = tally->info.type == TALLY_STAGE ? 16 : 4;
uint32_t stride = tally->info.type == TALLY_SHADER ? 16 : 4;
gpu_copy_tally_buffer(pass->stream, tally->gpu, buffer->gpu, srcIndex, dstOffset, count, stride);
trackBuffer(pass, buffer, GPU_PHASE_TRANSFER, GPU_CACHE_TRANSFER_WRITE);
}
@ -5013,7 +5013,7 @@ Readback* lovrPassReadTally(Pass* pass, Tally* tally, uint32_t index, uint32_t c
if (tally->info.type == TALLY_TIMER) {
lovrTallyResolve(tally, index, count, readback->buffer, 0, pass->stream);
} else {
uint32_t stride = tally->info.type == TALLY_STAGE ? 16 : 4;
uint32_t stride = tally->info.type == TALLY_SHADER ? 16 : 4;
gpu_copy_tally_buffer(pass->stream, tally->gpu, readback->buffer, index, 0, count, stride);
}

View File

@ -35,7 +35,7 @@ typedef struct {
bool wireframe;
bool depthClamp;
bool indirectDrawFirstInstance;
bool stageTally;
bool shaderTally;
bool float64;
bool int64;
bool int16;
@ -470,8 +470,8 @@ struct Image* lovrReadbackGetImage(Readback* readback);
typedef enum {
TALLY_TIMER,
TALLY_PIXEL,
TALLY_STAGE
TALLY_SHADER,
TALLY_PIXEL
} TallyType;
typedef struct {