mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07: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.
35 lines
963 B
C++
35 lines
963 B
C++
// Copyright 2015 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include "VideoCommon/PixelShaderGen.h"
|
|
|
|
namespace UberShader
|
|
{
|
|
#pragma pack(1)
|
|
struct pixel_ubershader_uid_data
|
|
{
|
|
u32 num_texgens : 4;
|
|
u32 early_depth : 1;
|
|
u32 per_pixel_depth : 1;
|
|
u32 uint_output : 1;
|
|
|
|
u32 NumValues() const { return sizeof(pixel_ubershader_uid_data); }
|
|
};
|
|
#pragma pack()
|
|
|
|
using PixelShaderUid = ShaderUid<pixel_ubershader_uid_data>;
|
|
|
|
PixelShaderUid GetPixelShaderUid();
|
|
|
|
ShaderCode GenPixelShader(APIType ApiType, const ShaderHostConfig& host_config,
|
|
const pixel_ubershader_uid_data* uid_data);
|
|
|
|
void EnumeratePixelShaderUids(const std::function<void(const PixelShaderUid&)>& callback);
|
|
void ClearUnusedPixelShaderUidBits(APIType ApiType, const ShaderHostConfig& host_config,
|
|
PixelShaderUid* uid);
|
|
} // namespace UberShader
|