Merge branch 'master' of https://github.com/xenia-project/xenia into canary_experimental
This commit is contained in:
@@ -2546,8 +2546,6 @@ bool VulkanCommandProcessor::IssueDraw(xenos::PrimitiveType prim_type,
|
||||
// After all commands that may dispatch, copy or insert barriers, submit the
|
||||
// barriers (may end the render pass), and (re)enter the render pass before
|
||||
// drawing.
|
||||
// TODO(Triang3l): Handle disabled variableMultisampleRate by restarting the
|
||||
// render pass with no attachments if the sample count becomes different.
|
||||
SubmitBarriersAndEnterRenderTargetCacheRenderPass(
|
||||
render_target_cache_->last_update_render_pass(),
|
||||
render_target_cache_->last_update_framebuffer());
|
||||
|
||||
@@ -581,6 +581,7 @@ bool VulkanPipelineCache::GetCurrentStateDescription(
|
||||
primitive_processing_result.host_primitive_reset_enabled;
|
||||
|
||||
description_out.depth_clamp_enable =
|
||||
device_features.depthClamp &&
|
||||
regs.Get<reg::PA_CL_CLIP_CNTL>().clip_disable;
|
||||
|
||||
// TODO(Triang3l): Tessellation.
|
||||
@@ -825,6 +826,10 @@ bool VulkanPipelineCache::ArePipelineRequirementsMet(
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!device_features.depthClamp && description.depth_clamp_enable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!device_features.fillModeNonSolid &&
|
||||
description.polygon_mode != PipelinePolygonMode::kFill) {
|
||||
return false;
|
||||
@@ -1173,9 +1178,6 @@ VkShaderModule VulkanPipelineCache::GetGeometryShader(GeometryShaderKey key) {
|
||||
builder.makeStructType(id_vector_temp, "gl_PerVertex");
|
||||
builder.addMemberName(type_struct_out_gl_per_vertex,
|
||||
member_out_gl_per_vertex_position, "gl_Position");
|
||||
builder.addMemberDecoration(type_struct_out_gl_per_vertex,
|
||||
member_out_gl_per_vertex_position,
|
||||
spv::DecorationInvariant);
|
||||
builder.addMemberDecoration(type_struct_out_gl_per_vertex,
|
||||
member_out_gl_per_vertex_position,
|
||||
spv::DecorationBuiltIn, spv::BuiltInPosition);
|
||||
@@ -1183,9 +1185,6 @@ VkShaderModule VulkanPipelineCache::GetGeometryShader(GeometryShaderKey key) {
|
||||
builder.addMemberName(type_struct_out_gl_per_vertex,
|
||||
member_out_gl_per_vertex_clip_distance,
|
||||
"gl_ClipDistance");
|
||||
builder.addMemberDecoration(type_struct_out_gl_per_vertex,
|
||||
member_out_gl_per_vertex_clip_distance,
|
||||
spv::DecorationInvariant);
|
||||
builder.addMemberDecoration(
|
||||
type_struct_out_gl_per_vertex, member_out_gl_per_vertex_clip_distance,
|
||||
spv::DecorationBuiltIn, spv::BuiltInClipDistance);
|
||||
@@ -1194,6 +1193,7 @@ VkShaderModule VulkanPipelineCache::GetGeometryShader(GeometryShaderKey key) {
|
||||
spv::Id out_gl_per_vertex =
|
||||
builder.createVariable(spv::NoPrecision, spv::StorageClassOutput,
|
||||
type_struct_out_gl_per_vertex, "");
|
||||
builder.addDecoration(out_gl_per_vertex, spv::DecorationInvariant);
|
||||
main_interface.push_back(out_gl_per_vertex);
|
||||
|
||||
// Begin the main function.
|
||||
|
||||
@@ -44,9 +44,13 @@ class VulkanRenderTargetCache final : public RenderTargetCache {
|
||||
// targets are different for 2x and 4x guest MSAA, pipelines because the
|
||||
// sample mask will have 2 samples excluded for 2x-as-4x).
|
||||
// This has effect only on the attachments, but even in cases when there
|
||||
// are no attachments, it can be used to the sample count between
|
||||
// are no attachments, it can be used to pass the sample count between
|
||||
// subsystems, for instance, to specify the desired number of samples to
|
||||
// use when there are no attachments in pipelines.
|
||||
// Also, without attachments, using separate render passes for different
|
||||
// sample counts ensures that if the variableMultisampleRate feature is
|
||||
// not supported, no draws with different rasterization sample counts end
|
||||
// up in one render pass.
|
||||
xenos::MsaaSamples msaa_samples : xenos::kMsaaSamplesBits; // 2
|
||||
// << 0 is depth, << 1...4 is color.
|
||||
uint32_t depth_and_color_used : 1 + xenos::kMaxColorRenderTargets; // 7
|
||||
|
||||
Reference in New Issue
Block a user