mirror of
https://github.com/libretro/dolphin
synced 2024-11-09 06:53:01 -05:00
149a97e396
Zero-initialization zeroes out all members and padding bits, so this is safe to do. While we're at it, also add static assertions that enforce the necessary requirements of a UID type explicitly within the ShaderUid class. This way, we can remove several memset calls around the shader generation code that makes sure the underlying UID data is zeroed out. Now our ShaderUid class enforces this for us, so we don't need to care about it at the usage sites.
31 lines
901 B
C++
31 lines
901 B
C++
// Copyright 2014 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include "Common/CommonTypes.h"
|
|
#include "VideoCommon/RenderState.h"
|
|
#include "VideoCommon/ShaderGenCommon.h"
|
|
|
|
enum class APIType;
|
|
|
|
#pragma pack(1)
|
|
struct geometry_shader_uid_data
|
|
{
|
|
u32 NumValues() const { return sizeof(geometry_shader_uid_data); }
|
|
bool IsPassthrough() const;
|
|
|
|
u32 numTexGens : 4;
|
|
u32 primitive_type : 2;
|
|
};
|
|
#pragma pack()
|
|
|
|
using GeometryShaderUid = ShaderUid<geometry_shader_uid_data>;
|
|
|
|
ShaderCode GenerateGeometryShaderCode(APIType ApiType, const ShaderHostConfig& host_config,
|
|
const geometry_shader_uid_data* uid_data);
|
|
GeometryShaderUid GetGeometryShaderUid(PrimitiveType primitive_type);
|
|
void EnumerateGeometryShaderUids(const std::function<void(const GeometryShaderUid&)>& callback);
|