projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '7.8'
[mesa.git]
/
src
/
gallium
/
state_trackers
/
vega
/
renderer.c
diff --git
a/src/gallium/state_trackers/vega/renderer.c
b/src/gallium/state_trackers/vega/renderer.c
index 47e8b470a11c94f881c11a1de257061170157234..48fbc3b330ee5ae14b8b4ae1323a6eae7192403e 100644
(file)
--- a/
src/gallium/state_trackers/vega/renderer.c
+++ b/
src/gallium/state_trackers/vega/renderer.c
@@
-39,6
+39,7
@@
#include "util/u_simple_shaders.h"
#include "util/u_memory.h"
#include "util/u_rect.h"
#include "util/u_simple_shaders.h"
#include "util/u_memory.h"
#include "util/u_rect.h"
+#include "util/u_sampler.h"
#include "cso_cache/cso_context.h"
#include "cso_cache/cso_context.h"
@@
-60,7
+61,7
@@
static void setup_shaders(struct renderer *ctx)
ctx->fs = util_make_fragment_tex_shader(pipe, TGSI_TEXTURE_2D);
}
ctx->fs = util_make_fragment_tex_shader(pipe, TGSI_TEXTURE_2D);
}
-static struct pipe_
buffer
*
+static struct pipe_
resource
*
setup_vertex_data(struct renderer *ctx,
float x0, float y0, float x1, float y1, float z)
{
setup_vertex_data(struct renderer *ctx,
float x0, float y0, float x1, float y1, float z)
{
@@
-90,10
+91,11
@@
setup_vertex_data(struct renderer *ctx,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
- sizeof(ctx->vertices) );
+ sizeof(ctx->vertices),
+ PIPE_BIND_VERTEX_BUFFER);
}
}
-static struct pipe_
buffer
*
+static struct pipe_
resource
*
setup_vertex_data_tex(struct renderer *ctx,
float x0, float y0, float x1, float y1,
float s0, float t0, float s1, float t1,
setup_vertex_data_tex(struct renderer *ctx,
float x0, float y0, float x1, float y1,
float s0, float t0, float s1, float t1,
@@
-125,11
+127,12
@@
setup_vertex_data_tex(struct renderer *ctx,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
- sizeof(ctx->vertices) );
+ sizeof(ctx->vertices),
+ PIPE_BIND_VERTEX_BUFFER);
}
}
-static struct pipe_
buffer
*
+static struct pipe_
resource
*
setup_vertex_data_qtex(struct renderer *ctx,
float x0, float y0, float x1, float y1,
float x2, float y2, float x3, float y3,
setup_vertex_data_qtex(struct renderer *ctx,
float x0, float y0, float x1, float y1,
float x2, float y2, float x3, float y3,
@@
-162,7
+165,8
@@
setup_vertex_data_qtex(struct renderer *ctx,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
return pipe_user_buffer_create( ctx->pipe->screen,
ctx->vertices,
- sizeof(ctx->vertices) );
+ sizeof(ctx->vertices),
+ PIPE_BIND_VERTEX_BUFFER);
}
struct renderer * renderer_create(struct vg_context *owner)
}
struct renderer * renderer_create(struct vg_context *owner)
@@
-205,7
+209,7
@@
void renderer_draw_quad(struct renderer *r,
VGfloat x2, VGfloat y2,
VGfloat depth)
{
VGfloat x2, VGfloat y2,
VGfloat depth)
{
- struct pipe_
buffer
*buf;
+ struct pipe_
resource
*buf;
buf = setup_vertex_data(r, x1, y1, x2, y2, depth);
buf = setup_vertex_data(r, x1, y1, x2, y2, depth);
@@
-216,20
+220,20
@@
void renderer_draw_quad(struct renderer *r,
4, /* verts */
2); /* attribs/vert */
4, /* verts */
2); /* attribs/vert */
- pipe_
buffer
_reference( &buf,
+ pipe_
resource
_reference( &buf,
NULL );
}
}
void renderer_draw_texture(struct renderer *r,
NULL );
}
}
void renderer_draw_texture(struct renderer *r,
- struct pipe_
textur
e *tex,
+ struct pipe_
resourc
e *tex,
VGfloat x1offset, VGfloat y1offset,
VGfloat x2offset, VGfloat y2offset,
VGfloat x1, VGfloat y1,
VGfloat x2, VGfloat y2)
{
struct pipe_context *pipe = r->pipe;
VGfloat x1offset, VGfloat y1offset,
VGfloat x2offset, VGfloat y2offset,
VGfloat x1, VGfloat y1,
VGfloat x2, VGfloat y2)
{
struct pipe_context *pipe = r->pipe;
- struct pipe_
buffer
*buf;
+ struct pipe_
resource
*buf;
VGfloat s0, t0, s1, t1;
assert(tex->width0 != 0);
VGfloat s0, t0, s1, t1;
assert(tex->width0 != 0);
@@
-255,7
+259,7
@@
void renderer_draw_texture(struct renderer *r,
4, /* verts */
2); /* attribs/vert */
4, /* verts */
2); /* attribs/vert */
- pipe_
buffer
_reference( &buf,
+ pipe_
resource
_reference( &buf,
NULL );
}
NULL );
}
@@
-263,24
+267,25
@@
void renderer_draw_texture(struct renderer *r,
}
void renderer_copy_texture(struct renderer *ctx,
}
void renderer_copy_texture(struct renderer *ctx,
- struct pipe_
texture
*src,
+ struct pipe_
sampler_view
*src,
VGfloat sx1, VGfloat sy1,
VGfloat sx2, VGfloat sy2,
VGfloat sx1, VGfloat sy1,
VGfloat sx2, VGfloat sy2,
- struct pipe_
textur
e *dst,
+ struct pipe_
resourc
e *dst,
VGfloat dx1, VGfloat dy1,
VGfloat dx2, VGfloat dy2)
{
struct pipe_context *pipe = ctx->pipe;
struct pipe_screen *screen = pipe->screen;
VGfloat dx1, VGfloat dy1,
VGfloat dx2, VGfloat dy2)
{
struct pipe_context *pipe = ctx->pipe;
struct pipe_screen *screen = pipe->screen;
- struct pipe_buffer *buf;
+ struct pipe_resource *tex = src->texture;
+ struct pipe_resource *buf;
struct pipe_surface *dst_surf = screen->get_tex_surface(
screen, dst, 0, 0, 0,
struct pipe_surface *dst_surf = screen->get_tex_surface(
screen, dst, 0, 0, 0,
- PIPE_B
UFFER_USAGE_GPU_WRITE
);
+ PIPE_B
IND_RENDER_TARGET
);
struct pipe_framebuffer_state fb;
float s0, t0, s1, t1;
struct pipe_framebuffer_state fb;
float s0, t0, s1, t1;
- assert(
src
->width0 != 0);
- assert(
src
->height0 != 0);
+ assert(
tex
->width0 != 0);
+ assert(
tex
->height0 != 0);
assert(dst->width0 != 0);
assert(dst->height0 != 0);
assert(dst->width0 != 0);
assert(dst->height0 != 0);
@@
-290,10
+295,10
@@
void renderer_copy_texture(struct renderer *ctx,
#endif
#if 1
#endif
#if 1
- s0 = sx1 /
src
->width0;
- s1 = sx2 /
src
->width0;
- t0 = sy1 /
src
->height0;
- t1 = sy2 /
src
->height0;
+ s0 = sx1 /
tex
->width0;
+ s1 = sx2 /
tex
->width0;
+ t0 = sy1 /
tex
->height0;
+ t1 = sy2 /
tex
->height0;
#else
s0 = 0;
s1 = 1;
#else
s0 = 0;
s1 = 1;
@@
-302,12
+307,12
@@
void renderer_copy_texture(struct renderer *ctx,
#endif
assert(screen->is_format_supported(screen, dst_surf->format, PIPE_TEXTURE_2D,
#endif
assert(screen->is_format_supported(screen, dst_surf->format, PIPE_TEXTURE_2D,
- PIPE_
TEXTURE_USAGE
_RENDER_TARGET, 0));
+ PIPE_
BIND
_RENDER_TARGET, 0));
/* save state (restored below) */
cso_save_blend(ctx->cso);
cso_save_samplers(ctx->cso);
/* save state (restored below) */
cso_save_blend(ctx->cso);
cso_save_samplers(ctx->cso);
- cso_save_
sampler_texture
s(ctx->cso);
+ cso_save_
fragment_sampler_view
s(ctx->cso);
cso_save_framebuffer(ctx->cso);
cso_save_fragment_shader(ctx->cso);
cso_save_vertex_shader(ctx->cso);
cso_save_framebuffer(ctx->cso);
cso_save_fragment_shader(ctx->cso);
cso_save_vertex_shader(ctx->cso);
@@
-345,7
+350,7
@@
void renderer_copy_texture(struct renderer *ctx,
vg_set_viewport(ctx->owner, VEGA_Y0_TOP);
/* texture */
vg_set_viewport(ctx->owner, VEGA_Y0_TOP);
/* texture */
- cso_set_
sampler_texture
s(ctx->cso, 1, &src);
+ cso_set_
fragment_sampler_view
s(ctx->cso, 1, &src);
/* shaders */
cso_set_vertex_shader_handle(ctx->cso, vg_texture_vs(ctx->owner));
/* shaders */
cso_set_vertex_shader_handle(ctx->cso, vg_texture_vs(ctx->owner));
@@
-378,14
+383,14
@@
void renderer_copy_texture(struct renderer *ctx,
4, /* verts */
2); /* attribs/vert */
4, /* verts */
2); /* attribs/vert */
- pipe_
buffer
_reference( &buf,
+ pipe_
resource
_reference( &buf,
NULL );
}
/* restore state we changed */
cso_restore_blend(ctx->cso);
cso_restore_samplers(ctx->cso);
NULL );
}
/* restore state we changed */
cso_restore_blend(ctx->cso);
cso_restore_samplers(ctx->cso);
- cso_restore_
sampler_texture
s(ctx->cso);
+ cso_restore_
fragment_sampler_view
s(ctx->cso);
cso_restore_framebuffer(ctx->cso);
cso_restore_vertex_shader(ctx->cso);
cso_restore_fragment_shader(ctx->cso);
cso_restore_framebuffer(ctx->cso);
cso_restore_vertex_shader(ctx->cso);
cso_restore_fragment_shader(ctx->cso);
@@
-405,8
+410,10
@@
void renderer_copy_surface(struct renderer *ctx,
{
struct pipe_context *pipe = ctx->pipe;
struct pipe_screen *screen = pipe->screen;
{
struct pipe_context *pipe = ctx->pipe;
struct pipe_screen *screen = pipe->screen;
- struct pipe_buffer *buf;
- struct pipe_texture texTemp, *tex;
+ struct pipe_resource *buf;
+ struct pipe_sampler_view view_templ;
+ struct pipe_sampler_view *view;
+ struct pipe_resource texTemp, *tex;
struct pipe_surface *texSurf;
struct pipe_framebuffer_state fb;
struct st_framebuffer *stfb = ctx->owner->draw_buffer;
struct pipe_surface *texSurf;
struct pipe_framebuffer_state fb;
struct st_framebuffer *stfb = ctx->owner->draw_buffer;
@@
-433,11
+440,11
@@
void renderer_copy_surface(struct renderer *ctx,
}
assert(screen->is_format_supported(screen, src->format, PIPE_TEXTURE_2D,
}
assert(screen->is_format_supported(screen, src->format, PIPE_TEXTURE_2D,
- PIPE_
TEXTURE_USAGE_SAMPLER
, 0));
+ PIPE_
BIND_SAMPLER_VIEW
, 0));
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
- PIPE_
TEXTURE_USAGE_SAMPLER
, 0));
+ PIPE_
BIND_SAMPLER_VIEW
, 0));
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
assert(screen->is_format_supported(screen, dst->format, PIPE_TEXTURE_2D,
- PIPE_
TEXTURE_USAGE
_RENDER_TARGET, 0));
+ PIPE_
BIND
_RENDER_TARGET, 0));
/*
* XXX for now we're always creating a temporary texture.
/*
* XXX for now we're always creating a temporary texture.
@@
-453,12
+460,18
@@
void renderer_copy_surface(struct renderer *ctx,
texTemp.height0 = srcH;
texTemp.depth0 = 1;
texTemp.height0 = srcH;
texTemp.depth0 = 1;
- tex = screen->
textur
e_create(screen, &texTemp);
+ tex = screen->
resourc
e_create(screen, &texTemp);
if (!tex)
return;
if (!tex)
return;
+ u_sampler_view_default_template(&view_templ, tex, tex->format);
+ view = pipe->create_sampler_view(pipe, tex, &view_templ);
+
+ if (!view)
+ return;
+
texSurf = screen->get_tex_surface(screen, tex, 0, 0, 0,
texSurf = screen->get_tex_surface(screen, tex, 0, 0, 0,
- PIPE_B
UFFER_USAGE_GPU_WRITE
);
+ PIPE_B
IND_RENDER_TARGET
);
/* load temp texture */
if (pipe->surface_copy) {
/* load temp texture */
if (pipe->surface_copy) {
@@
-479,7
+492,7
@@
void renderer_copy_surface(struct renderer *ctx,
/* save state (restored below) */
cso_save_blend(ctx->cso);
cso_save_samplers(ctx->cso);
/* save state (restored below) */
cso_save_blend(ctx->cso);
cso_save_samplers(ctx->cso);
- cso_save_
sampler_texture
s(ctx->cso);
+ cso_save_
fragment_sampler_view
s(ctx->cso);
cso_save_framebuffer(ctx->cso);
cso_save_fragment_shader(ctx->cso);
cso_save_vertex_shader(ctx->cso);
cso_save_framebuffer(ctx->cso);
cso_save_fragment_shader(ctx->cso);
cso_save_vertex_shader(ctx->cso);
@@
-515,7
+528,7
@@
void renderer_copy_surface(struct renderer *ctx,
}
/* texture */
}
/* texture */
- cso_set_
sampler_textures(ctx->cso, 1, &tex
);
+ cso_set_
fragment_sampler_views(ctx->cso, 1, &view
);
/* shaders */
cso_set_fragment_shader_handle(ctx->cso, ctx->fs);
/* shaders */
cso_set_fragment_shader_handle(ctx->cso, ctx->fs);
@@
-544,7
+557,7
@@
void renderer_copy_surface(struct renderer *ctx,
4, /* verts */
2); /* attribs/vert */
4, /* verts */
2); /* attribs/vert */
- pipe_
buffer
_reference( &buf,
+ pipe_
resource
_reference( &buf,
NULL );
}
NULL );
}
@@
-552,17
+565,18
@@
void renderer_copy_surface(struct renderer *ctx,
/* restore state we changed */
cso_restore_blend(ctx->cso);
cso_restore_samplers(ctx->cso);
/* restore state we changed */
cso_restore_blend(ctx->cso);
cso_restore_samplers(ctx->cso);
- cso_restore_
sampler_texture
s(ctx->cso);
+ cso_restore_
fragment_sampler_view
s(ctx->cso);
cso_restore_framebuffer(ctx->cso);
cso_restore_fragment_shader(ctx->cso);
cso_restore_vertex_shader(ctx->cso);
cso_restore_viewport(ctx->cso);
cso_restore_framebuffer(ctx->cso);
cso_restore_fragment_shader(ctx->cso);
cso_restore_vertex_shader(ctx->cso);
cso_restore_viewport(ctx->cso);
- pipe_texture_reference(&tex, NULL);
+ pipe_resource_reference(&tex, NULL);
+ pipe_sampler_view_reference(&view, NULL);
}
void renderer_texture_quad(struct renderer *r,
}
void renderer_texture_quad(struct renderer *r,
- struct pipe_
textur
e *tex,
+ struct pipe_
resourc
e *tex,
VGfloat x1offset, VGfloat y1offset,
VGfloat x2offset, VGfloat y2offset,
VGfloat x1, VGfloat y1,
VGfloat x1offset, VGfloat y1offset,
VGfloat x2offset, VGfloat y2offset,
VGfloat x1, VGfloat y1,
@@
-571,7
+585,7
@@
void renderer_texture_quad(struct renderer *r,
VGfloat x4, VGfloat y4)
{
struct pipe_context *pipe = r->pipe;
VGfloat x4, VGfloat y4)
{
struct pipe_context *pipe = r->pipe;
- struct pipe_
buffer
*buf;
+ struct pipe_
resource
*buf;
VGfloat s0, t0, s1, t1;
assert(tex->width0 != 0);
VGfloat s0, t0, s1, t1;
assert(tex->width0 != 0);
@@
-597,7
+611,7
@@
void renderer_texture_quad(struct renderer *r,
4, /* verts */
2); /* attribs/vert */
4, /* verts */
2); /* attribs/vert */
- pipe_
buffer
_reference(&buf,
+ pipe_
resource
_reference(&buf,
NULL);
}
NULL);
}