nv50,nvc0: add support for fine derivatives
The quadop-based method we currently use on all chipsets already provides the fine version of the derivatives. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
88b0c6403f
commit
f08d7b8fe1
|
@ -188,7 +188,7 @@ GL 4.5, GLSL 4.50:
|
|||
GL_ARB_clip_control not started
|
||||
GL_ARB_conditional_render_inverted not started
|
||||
GL_ARB_cull_distance not started
|
||||
GL_ARB_derivative_control not started
|
||||
GL_ARB_derivative_control DONE (nv50, nvc0)
|
||||
GL_ARB_direct_state_access not started
|
||||
GL_ARB_get_texture_sub_image started (Brian Paul)
|
||||
GL_ARB_shader_texture_image_samples not started
|
||||
|
|
|
@ -47,6 +47,7 @@ Note: some of the new features are only available with certain drivers.
|
|||
<li>GL_ARB_ES3_compatibility on nv50, nvc0, r600, radeonsi, softpipe, llvmpipe</li>
|
||||
<li>GL_ARB_clear_texture on i965</li>
|
||||
<li>GL_ARB_compressed_texture_pixel_storage on all drivers</li>
|
||||
<li>GL_ARB_derivative_control on nv50, nvc0</li>
|
||||
<li>GL_ARB_draw_indirect on nvc0, radeonsi</li>
|
||||
<li>GL_ARB_explicit_uniform_location (all drivers that support GLSL)</li>
|
||||
<li>GL_ARB_fragment_layer_viewport on nv50, nvc0, llvmpipe, r600</li>
|
||||
|
|
|
@ -531,7 +531,9 @@ static nv50_ir::operation translateOpcode(uint opcode)
|
|||
|
||||
NV50_IR_OPCODE_CASE(COS, COS);
|
||||
NV50_IR_OPCODE_CASE(DDX, DFDX);
|
||||
NV50_IR_OPCODE_CASE(DDX_FINE, DFDX);
|
||||
NV50_IR_OPCODE_CASE(DDY, DFDY);
|
||||
NV50_IR_OPCODE_CASE(DDY_FINE, DFDY);
|
||||
NV50_IR_OPCODE_CASE(KILL, DISCARD);
|
||||
|
||||
NV50_IR_OPCODE_CASE(SEQ, SET);
|
||||
|
@ -2327,6 +2329,8 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn)
|
|||
case TGSI_OPCODE_NOT:
|
||||
case TGSI_OPCODE_DDX:
|
||||
case TGSI_OPCODE_DDY:
|
||||
case TGSI_OPCODE_DDX_FINE:
|
||||
case TGSI_OPCODE_DDY_FINE:
|
||||
FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi)
|
||||
mkOp1(op, dstTy, dst0[c], fetchSrc(0, c));
|
||||
break;
|
||||
|
|
|
@ -169,6 +169,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_USER_VERTEX_BUFFERS:
|
||||
case PIPE_CAP_TEXTURE_MULTISAMPLE:
|
||||
case PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER:
|
||||
case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
|
||||
return 1;
|
||||
case PIPE_CAP_SEAMLESS_CUBE_MAP:
|
||||
return 1; /* class_3d >= NVA0_3D_CLASS; */
|
||||
|
@ -200,7 +201,6 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:
|
||||
case PIPE_CAP_COMPUTE:
|
||||
case PIPE_CAP_DRAW_INDIRECT:
|
||||
case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -167,6 +167,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
|
||||
return 1;
|
||||
case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
|
||||
return (class_3d >= NVE4_3D_CLASS) ? 1 : 0;
|
||||
|
@ -184,7 +185,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_TGSI_VS_LAYER_VIEWPORT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:
|
||||
case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue