Finishing unique_ptr'ing and fixing file memory management (for now).
This commit is contained in:
@@ -34,7 +34,7 @@ D3D11IndexBufferResource::~D3D11IndexBufferResource() {
|
||||
|
||||
int D3D11IndexBufferResource::CreateHandle() {
|
||||
D3D11_BUFFER_DESC buffer_desc;
|
||||
xe_zero_struct(&buffer_desc, sizeof(buffer_desc));
|
||||
memset(&buffer_desc, 0, sizeof(buffer_desc));
|
||||
buffer_desc.ByteWidth = static_cast<UINT>(memory_range_.length);
|
||||
buffer_desc.Usage = D3D11_USAGE_DYNAMIC;
|
||||
buffer_desc.BindFlags = D3D11_BIND_INDEX_BUFFER;
|
||||
@@ -100,7 +100,7 @@ D3D11VertexBufferResource::~D3D11VertexBufferResource() {
|
||||
|
||||
int D3D11VertexBufferResource::CreateHandle() {
|
||||
D3D11_BUFFER_DESC buffer_desc;
|
||||
xe_zero_struct(&buffer_desc, sizeof(buffer_desc));
|
||||
memset(&buffer_desc, 0, sizeof(buffer_desc));
|
||||
buffer_desc.ByteWidth = static_cast<UINT>(memory_range_.length);
|
||||
buffer_desc.Usage = D3D11_USAGE_DYNAMIC;
|
||||
buffer_desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
|
||||
|
||||
@@ -59,9 +59,8 @@ int D3D11GeometryShader::Prepare(D3D11VertexShaderResource* vertex_shader) {
|
||||
return 1;
|
||||
}
|
||||
byte_code_length = shader_blob->GetBufferSize();
|
||||
byte_code = xe_malloc(byte_code_length);
|
||||
xe_copy_struct(
|
||||
byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
byte_code = malloc(byte_code_length);
|
||||
memcpy(byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
SafeRelease(shader_blob);
|
||||
|
||||
// Create shader.
|
||||
@@ -71,7 +70,7 @@ int D3D11GeometryShader::Prepare(D3D11VertexShaderResource* vertex_shader) {
|
||||
&handle_);
|
||||
if (FAILED(hr)) {
|
||||
XELOGE("D3D11: failed to create geometry shader");
|
||||
xe_free(byte_code);
|
||||
free(byte_code);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,13 +39,12 @@ D3D11GraphicsDriver::D3D11GraphicsDriver(
|
||||
|
||||
resource_cache_ = new D3D11ResourceCache(memory, device_, context_);
|
||||
|
||||
xe_zero_struct(&state_, sizeof(state_));
|
||||
memset(&state_, 0, sizeof(state_));
|
||||
|
||||
xe_zero_struct(&render_targets_, sizeof(render_targets_));
|
||||
memset(&render_targets_, 0, sizeof(render_targets_));
|
||||
|
||||
HRESULT hr;
|
||||
D3D11_BUFFER_DESC buffer_desc;
|
||||
xe_zero_struct(&buffer_desc, sizeof(buffer_desc));
|
||||
D3D11_BUFFER_DESC buffer_desc = {0};
|
||||
buffer_desc.Usage = D3D11_USAGE_DYNAMIC;
|
||||
buffer_desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
|
||||
buffer_desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
|
||||
@@ -100,8 +99,7 @@ int D3D11GraphicsDriver::Initialize() {
|
||||
|
||||
void D3D11GraphicsDriver::InitializeInvalidTexture() {
|
||||
// TODO(benvanik): pattern?
|
||||
D3D11_TEXTURE2D_DESC texture_desc;
|
||||
xe_zero_struct(&texture_desc, sizeof(texture_desc));
|
||||
D3D11_TEXTURE2D_DESC texture_desc = {0};
|
||||
texture_desc.Width = 4;
|
||||
texture_desc.Height = 4;
|
||||
texture_desc.MipLevels = 1;
|
||||
@@ -131,8 +129,7 @@ void D3D11GraphicsDriver::InitializeInvalidTexture() {
|
||||
return;
|
||||
}
|
||||
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC texture_view_desc;
|
||||
xe_zero_struct(&texture_view_desc, sizeof(texture_view_desc));
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC texture_view_desc = {};
|
||||
texture_view_desc.Format = texture_desc.Format;
|
||||
texture_view_desc.ViewDimension = D3D10_SRV_DIMENSION_TEXTURE2D;
|
||||
texture_view_desc.Texture2D.MipLevels = 1;
|
||||
@@ -141,8 +138,7 @@ void D3D11GraphicsDriver::InitializeInvalidTexture() {
|
||||
texture, &texture_view_desc, &invalid_texture_view_);
|
||||
SafeRelease(texture);
|
||||
|
||||
D3D11_SAMPLER_DESC sampler_desc;
|
||||
xe_zero_struct(&sampler_desc, sizeof(sampler_desc));
|
||||
D3D11_SAMPLER_DESC sampler_desc = {};
|
||||
sampler_desc.Filter;
|
||||
sampler_desc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
|
||||
sampler_desc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
|
||||
@@ -396,8 +392,7 @@ int D3D11GraphicsDriver::SetupRasterizerState(const DrawCommand& command) {
|
||||
ID3D11RasterizerState* rasterizer_state = nullptr;
|
||||
auto it = rasterizer_state_cache_.find(key);
|
||||
if (it == rasterizer_state_cache_.end()) {
|
||||
D3D11_RASTERIZER_DESC rasterizer_desc;
|
||||
xe_zero_struct(&rasterizer_desc, sizeof(rasterizer_desc));
|
||||
D3D11_RASTERIZER_DESC rasterizer_desc = {};
|
||||
rasterizer_desc.FillMode = D3D11_FILL_SOLID; // D3D11_FILL_WIREFRAME;
|
||||
switch (mode_control & 0x3) {
|
||||
case 0:
|
||||
@@ -480,8 +475,7 @@ int D3D11GraphicsDriver::SetupBlendState(const DrawCommand& command) {
|
||||
ID3D11BlendState* blend_state = nullptr;
|
||||
auto it = blend_state_cache_.find(key);
|
||||
if (it == blend_state_cache_.end()) {
|
||||
D3D11_BLEND_DESC blend_desc;
|
||||
xe_zero_struct(&blend_desc, sizeof(blend_desc));
|
||||
D3D11_BLEND_DESC blend_desc = {0};
|
||||
//blend_desc.AlphaToCoverageEnable = false;
|
||||
// ?
|
||||
blend_desc.IndependentBlendEnable = true;
|
||||
@@ -557,8 +551,7 @@ int D3D11GraphicsDriver::SetupDepthStencilState(const DrawCommand& command) {
|
||||
ID3D11DepthStencilState* depth_stencil_state = nullptr;
|
||||
auto it = depth_stencil_state_cache_.find(key);
|
||||
if (it == depth_stencil_state_cache_.end()) {
|
||||
D3D11_DEPTH_STENCIL_DESC depth_stencil_desc;
|
||||
xe_zero_struct(&depth_stencil_desc, sizeof(depth_stencil_desc));
|
||||
D3D11_DEPTH_STENCIL_DESC depth_stencil_desc = {0};
|
||||
// A2XX_RB_DEPTHCONTROL_BACKFACE_ENABLE
|
||||
// ?
|
||||
// A2XX_RB_DEPTHCONTROL_Z_ENABLE
|
||||
@@ -846,8 +839,7 @@ int D3D11GraphicsDriver::RebuildRenderTargets(uint32_t width,
|
||||
|
||||
for (int n = 0; n < poly::countof(render_targets_.color_buffers); n++) {
|
||||
auto& cb = render_targets_.color_buffers[n];
|
||||
D3D11_TEXTURE2D_DESC color_buffer_desc;
|
||||
xe_zero_struct(&color_buffer_desc, sizeof(color_buffer_desc));
|
||||
D3D11_TEXTURE2D_DESC color_buffer_desc = {};
|
||||
color_buffer_desc.Width = width;
|
||||
color_buffer_desc.Height = height;
|
||||
color_buffer_desc.MipLevels = 1;
|
||||
@@ -865,7 +857,7 @@ int D3D11GraphicsDriver::RebuildRenderTargets(uint32_t width,
|
||||
&color_buffer_desc, NULL, &cb.buffer);
|
||||
|
||||
D3D11_RENDER_TARGET_VIEW_DESC render_target_view_desc;
|
||||
xe_zero_struct(&render_target_view_desc, sizeof(render_target_view_desc));
|
||||
memset(&render_target_view_desc, 0, sizeof(render_target_view_desc));
|
||||
render_target_view_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
render_target_view_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
|
||||
// render_target_view_desc.Buffer ?
|
||||
@@ -875,8 +867,7 @@ int D3D11GraphicsDriver::RebuildRenderTargets(uint32_t width,
|
||||
&cb.color_view_8888);
|
||||
}
|
||||
|
||||
D3D11_TEXTURE2D_DESC depth_stencil_desc;
|
||||
xe_zero_struct(&depth_stencil_desc, sizeof(depth_stencil_desc));
|
||||
D3D11_TEXTURE2D_DESC depth_stencil_desc = {};
|
||||
depth_stencil_desc.Width = width;
|
||||
depth_stencil_desc.Height = height;
|
||||
depth_stencil_desc.MipLevels = 1;
|
||||
@@ -891,8 +882,7 @@ int D3D11GraphicsDriver::RebuildRenderTargets(uint32_t width,
|
||||
device_->CreateTexture2D(
|
||||
&depth_stencil_desc, NULL, &render_targets_.depth_buffer);
|
||||
|
||||
D3D11_DEPTH_STENCIL_VIEW_DESC depth_stencil_view_desc;
|
||||
xe_zero_struct(&depth_stencil_view_desc, sizeof(depth_stencil_view_desc));
|
||||
D3D11_DEPTH_STENCIL_VIEW_DESC depth_stencil_view_desc = {};
|
||||
depth_stencil_view_desc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
|
||||
depth_stencil_view_desc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
|
||||
depth_stencil_view_desc.Flags = 0;
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace d3d11 {
|
||||
class D3D11Window;
|
||||
|
||||
|
||||
GraphicsSystem* Create(Emulator* emulator);
|
||||
std::unique_ptr<GraphicsSystem> Create(Emulator* emulator);
|
||||
|
||||
|
||||
class D3D11GraphicsSystem : public GraphicsSystem {
|
||||
|
||||
@@ -175,8 +175,7 @@ bool D3D11ProfilerDisplay::SetupState() {
|
||||
HRESULT hr;
|
||||
auto device = window_->device();
|
||||
|
||||
D3D11_BLEND_DESC blend_desc;
|
||||
xe_zero_struct(&blend_desc, sizeof(blend_desc));
|
||||
D3D11_BLEND_DESC blend_desc = {0};
|
||||
blend_desc.RenderTarget[0].BlendEnable = true;
|
||||
blend_desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
|
||||
blend_desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
|
||||
@@ -188,8 +187,7 @@ bool D3D11ProfilerDisplay::SetupState() {
|
||||
hr = device->CreateBlendState(&blend_desc, &blend_state_);
|
||||
assert_true(SUCCEEDED(hr));
|
||||
|
||||
D3D11_DEPTH_STENCIL_DESC depth_stencil_desc;
|
||||
xe_zero_struct(&depth_stencil_desc, sizeof(depth_stencil_desc));
|
||||
D3D11_DEPTH_STENCIL_DESC depth_stencil_desc = {0};
|
||||
depth_stencil_desc.DepthEnable = false;
|
||||
depth_stencil_desc.StencilEnable = false;
|
||||
depth_stencil_desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
|
||||
@@ -371,8 +369,7 @@ bool D3D11ProfilerDisplay::SetupFont() {
|
||||
return false;
|
||||
}
|
||||
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC texture_view_desc;
|
||||
xe_zero_struct(&texture_view_desc, sizeof(texture_view_desc));
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC texture_view_desc = {};
|
||||
texture_view_desc.Format = texture_desc.Format;
|
||||
texture_view_desc.ViewDimension = D3D10_SRV_DIMENSION_TEXTURE2D;
|
||||
texture_view_desc.Texture2D.MipLevels = 1;
|
||||
@@ -385,8 +382,7 @@ bool D3D11ProfilerDisplay::SetupFont() {
|
||||
return false;
|
||||
}
|
||||
|
||||
D3D11_SAMPLER_DESC sampler_desc;
|
||||
xe_zero_struct(&sampler_desc, sizeof(sampler_desc));
|
||||
D3D11_SAMPLER_DESC sampler_desc = {};
|
||||
sampler_desc.Filter = D3D11_ENCODE_BASIC_FILTER(
|
||||
D3D11_FILTER_TYPE_POINT, D3D11_FILTER_TYPE_POINT,
|
||||
D3D11_FILTER_TYPE_POINT, false);
|
||||
|
||||
@@ -35,8 +35,7 @@ int D3D11SamplerStateResource::Prepare() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
D3D11_SAMPLER_DESC sampler_desc;
|
||||
xe_zero_struct(&sampler_desc, sizeof(sampler_desc));
|
||||
D3D11_SAMPLER_DESC sampler_desc = {};
|
||||
// MIN, MAG, MIP
|
||||
static const D3D11_FILTER filter_matrix[2][2][3] = {
|
||||
{
|
||||
|
||||
@@ -97,7 +97,7 @@ D3D11VertexShaderResource::D3D11VertexShaderResource(
|
||||
handle_(nullptr),
|
||||
input_layout_(nullptr),
|
||||
translated_src_(nullptr) {
|
||||
xe_zero_struct(geometry_shaders_, sizeof(geometry_shaders_));
|
||||
memset(geometry_shaders_, 0, sizeof(geometry_shaders_));
|
||||
}
|
||||
|
||||
D3D11VertexShaderResource::~D3D11VertexShaderResource() {
|
||||
@@ -106,7 +106,7 @@ D3D11VertexShaderResource::~D3D11VertexShaderResource() {
|
||||
for (int i = 0; i < poly::countof(geometry_shaders_); ++i) {
|
||||
delete geometry_shaders_[i];
|
||||
}
|
||||
xe_free(translated_src_);
|
||||
free(translated_src_);
|
||||
}
|
||||
|
||||
int D3D11VertexShaderResource::Prepare(
|
||||
@@ -135,25 +135,22 @@ int D3D11VertexShaderResource::Prepare(
|
||||
return 1;
|
||||
}
|
||||
byte_code_length = shader_blob->GetBufferSize();
|
||||
byte_code = xe_malloc(byte_code_length);
|
||||
xe_copy_struct(
|
||||
byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
byte_code = malloc(byte_code_length);
|
||||
memcpy(byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
SafeRelease(shader_blob);
|
||||
|
||||
// Create shader.
|
||||
HRESULT hr = resource_cache_->device()->CreateVertexShader(
|
||||
byte_code, byte_code_length,
|
||||
nullptr,
|
||||
&handle_);
|
||||
byte_code, byte_code_length, nullptr, &handle_);
|
||||
if (FAILED(hr)) {
|
||||
XELOGE("D3D11: failed to create vertex shader");
|
||||
xe_free(byte_code);
|
||||
free(byte_code);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create input layout.
|
||||
ret = CreateInputLayout(byte_code, byte_code_length);
|
||||
xe_free(byte_code);
|
||||
free(byte_code);
|
||||
if (ret) {
|
||||
return 1;
|
||||
}
|
||||
@@ -174,9 +171,8 @@ int D3D11VertexShaderResource::CreateInputLayout(const void* byte_code,
|
||||
return 0;
|
||||
}
|
||||
|
||||
D3D11_INPUT_ELEMENT_DESC* element_descs =
|
||||
(D3D11_INPUT_ELEMENT_DESC*)xe_alloca(
|
||||
sizeof(D3D11_INPUT_ELEMENT_DESC) * element_count);
|
||||
D3D11_INPUT_ELEMENT_DESC* element_descs = (D3D11_INPUT_ELEMENT_DESC*)alloca(
|
||||
sizeof(D3D11_INPUT_ELEMENT_DESC) * element_count);
|
||||
uint32_t el_index = 0;
|
||||
for (uint32_t n = 0; n < inputs.count; n++) {
|
||||
const auto& input = inputs.descs[n];
|
||||
@@ -327,7 +323,7 @@ D3D11PixelShaderResource::D3D11PixelShaderResource(
|
||||
|
||||
D3D11PixelShaderResource::~D3D11PixelShaderResource() {
|
||||
SafeRelease(handle_);
|
||||
xe_free(translated_src_);
|
||||
free(translated_src_);
|
||||
}
|
||||
|
||||
int D3D11PixelShaderResource::Prepare(const xe_gpu_program_cntl_t& program_cntl,
|
||||
@@ -358,9 +354,8 @@ int D3D11PixelShaderResource::Prepare(const xe_gpu_program_cntl_t& program_cntl,
|
||||
return 1;
|
||||
}
|
||||
byte_code_length = shader_blob->GetBufferSize();
|
||||
byte_code = xe_malloc(byte_code_length);
|
||||
xe_copy_struct(
|
||||
byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
byte_code = malloc(byte_code_length);
|
||||
memcpy(byte_code, shader_blob->GetBufferPointer(), byte_code_length);
|
||||
SafeRelease(shader_blob);
|
||||
|
||||
// Create shader.
|
||||
@@ -370,11 +365,11 @@ int D3D11PixelShaderResource::Prepare(const xe_gpu_program_cntl_t& program_cntl,
|
||||
&handle_);
|
||||
if (FAILED(hr)) {
|
||||
XELOGE("D3D11: failed to create pixel shader");
|
||||
xe_free(byte_code);
|
||||
free(byte_code);
|
||||
return 1;
|
||||
}
|
||||
|
||||
xe_free(byte_code);
|
||||
free(byte_code);
|
||||
is_prepared_ = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -37,8 +37,7 @@ D3D11TextureResource::~D3D11TextureResource() {
|
||||
int D3D11TextureResource::CreateHandle() {
|
||||
SCOPE_profile_cpu_f("gpu");
|
||||
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc;
|
||||
xe_zero_struct(&srv_desc, sizeof(srv_desc));
|
||||
D3D11_SHADER_RESOURCE_VIEW_DESC srv_desc = {};
|
||||
// TODO(benvanik): this may need to be typed on the fetch instruction (float/int/etc?)
|
||||
srv_desc.Format = info_.format;
|
||||
|
||||
@@ -94,8 +93,7 @@ int D3D11TextureResource::CreateHandle() {
|
||||
int D3D11TextureResource::CreateHandle1D() {
|
||||
uint32_t width = 1 + info_.size_1d.width;
|
||||
|
||||
D3D11_TEXTURE1D_DESC texture_desc;
|
||||
xe_zero_struct(&texture_desc, sizeof(texture_desc));
|
||||
D3D11_TEXTURE1D_DESC texture_desc = {};
|
||||
texture_desc.Width = width;
|
||||
texture_desc.MipLevels = 1;
|
||||
texture_desc.ArraySize = 1;
|
||||
@@ -113,8 +111,7 @@ int D3D11TextureResource::CreateHandle1D() {
|
||||
}
|
||||
|
||||
int D3D11TextureResource::CreateHandle2D() {
|
||||
D3D11_TEXTURE2D_DESC texture_desc;
|
||||
xe_zero_struct(&texture_desc, sizeof(texture_desc));
|
||||
D3D11_TEXTURE2D_DESC texture_desc = {};
|
||||
texture_desc.Width = info_.size_2d.output_width;
|
||||
texture_desc.Height = info_.size_2d.output_height;
|
||||
texture_desc.MipLevels = 1;
|
||||
|
||||
@@ -57,8 +57,7 @@ int D3D11Window::Initialize(const std::wstring& title, uint32_t width,
|
||||
}
|
||||
|
||||
// Setup swap chain.
|
||||
DXGI_SWAP_CHAIN_DESC desc;
|
||||
xe_zero_struct(&desc, sizeof(desc));
|
||||
DXGI_SWAP_CHAIN_DESC desc = {};
|
||||
desc.OutputWindow = handle();
|
||||
desc.Windowed = TRUE;
|
||||
desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
|
||||
|
||||
Reference in New Issue
Block a user