mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-23 20:20:38 +02:00
tu: Implement extendedDynamicState3TessellationDomainOrigin
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18912>
This commit is contained in:
parent
55bbf56a17
commit
0e09559bd6
5 changed files with 24 additions and 3 deletions
|
|
@ -2610,6 +2610,11 @@ tu_CmdBindPipeline(VkCommandBuffer commandBuffer,
|
|||
BIT(TU_DYNAMIC_STATE_POLYGON_MODE)))
|
||||
cmd->state.polygon_mode = pipeline->rast.polygon_mode;
|
||||
|
||||
if (!(pipeline->dynamic_state_mask &
|
||||
BIT(TU_DYNAMIC_STATE_TESS_DOMAIN_ORIGIN)))
|
||||
cmd->state.tess_upper_left_domain_origin =
|
||||
pipeline->tess.upper_left_domain_origin;
|
||||
|
||||
tu6_update_msaa(cmd, pipeline->output.samples);
|
||||
|
||||
if ((pipeline->dynamic_state_mask & BIT(VK_DYNAMIC_STATE_VIEWPORT)) &&
|
||||
|
|
@ -3102,6 +3107,15 @@ tu_CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,
|
|||
cmd->state.dirty |= TU_CMD_DIRTY_RAST;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
tu_CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,
|
||||
VkTessellationDomainOrigin domainOrigin)
|
||||
{
|
||||
TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
|
||||
cmd->state.tess_upper_left_domain_origin =
|
||||
domainOrigin == VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT;
|
||||
}
|
||||
|
||||
static void
|
||||
tu_flush_for_access(struct tu_cache_state *cache,
|
||||
enum tu_cmd_access_mask src_mask,
|
||||
|
|
@ -4437,7 +4451,7 @@ tu6_draw_common(struct tu_cmd_buffer *cmd,
|
|||
bool primitive_restart = primitive_restart_enabled && indexed;
|
||||
bool provoking_vtx_last = pipeline->rast.provoking_vertex_last;
|
||||
bool tess_upper_left_domain_origin =
|
||||
pipeline->tess.upper_left_domain_origin;
|
||||
cmd->state.tess_upper_left_domain_origin;
|
||||
|
||||
struct tu_primitive_params* prim_params = &cmd->state.last_prim_params;
|
||||
|
||||
|
|
|
|||
|
|
@ -347,6 +347,7 @@ struct tu_cmd_state
|
|||
bool rop_reads_dst;
|
||||
enum pc_di_primtype primtype;
|
||||
bool primitive_restart_enable;
|
||||
bool tess_upper_left_domain_origin;
|
||||
|
||||
/* saved states to re-emit in TU_CMD_DIRTY_DRAW_STATE case */
|
||||
struct tu_draw_state dynamic_state[TU_DYNAMIC_STATE_COUNT];
|
||||
|
|
|
|||
|
|
@ -762,7 +762,7 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features =
|
||||
(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)ext;
|
||||
features->extendedDynamicState3PolygonMode = true;
|
||||
features->extendedDynamicState3TessellationDomainOrigin = false;
|
||||
features->extendedDynamicState3TessellationDomainOrigin = true;
|
||||
features->extendedDynamicState3DepthClampEnable = false;
|
||||
features->extendedDynamicState3DepthClipEnable = false;
|
||||
features->extendedDynamicState3LogicOpEnable = false;
|
||||
|
|
|
|||
|
|
@ -3712,6 +3712,10 @@ tu_pipeline_builder_parse_dynamic(struct tu_pipeline_builder *builder,
|
|||
BIT(TU_DYNAMIC_STATE_RAST) |
|
||||
BIT(TU_DYNAMIC_STATE_POLYGON_MODE);
|
||||
break;
|
||||
case VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT:
|
||||
pipeline->dynamic_state_mask |=
|
||||
BIT(TU_DYNAMIC_STATE_TESS_DOMAIN_ORIGIN);
|
||||
break;
|
||||
default:
|
||||
assert(!"unsupported dynamic state");
|
||||
break;
|
||||
|
|
@ -3769,7 +3773,8 @@ tu_pipeline_builder_parse_libraries(struct tu_pipeline_builder *builder,
|
|||
BIT(VK_DYNAMIC_STATE_DEPTH_BIAS) |
|
||||
BIT(TU_DYNAMIC_STATE_RASTERIZER_DISCARD) |
|
||||
BIT(TU_DYNAMIC_STATE_PATCH_CONTROL_POINTS) |
|
||||
BIT(TU_DYNAMIC_STATE_POLYGON_MODE);
|
||||
BIT(TU_DYNAMIC_STATE_POLYGON_MODE) |
|
||||
BIT(TU_DYNAMIC_STATE_TESS_DOMAIN_ORIGIN);
|
||||
}
|
||||
|
||||
if (library->state &
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ enum tu_dynamic_state
|
|||
TU_DYNAMIC_STATE_LOGIC_OP,
|
||||
TU_DYNAMIC_STATE_COLOR_WRITE_ENABLE,
|
||||
TU_DYNAMIC_STATE_POLYGON_MODE,
|
||||
TU_DYNAMIC_STATE_TESS_DOMAIN_ORIGIN,
|
||||
/* re-use the line width enum as it uses GRAS_SU_CNTL: */
|
||||
TU_DYNAMIC_STATE_RAST = VK_DYNAMIC_STATE_LINE_WIDTH,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue