本文整理汇总了C++中i915_context函数的典型用法代码示例。如果您正苦于以下问题:C++ i915_context函数的具体用法?C++ i915_context怎么用?C++ i915_context使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i915_context函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: i915_set_fragment_sampler_views
static void i915_set_fragment_sampler_views(struct pipe_context *pipe,
unsigned num,
struct pipe_sampler_view **views)
{
struct i915_context *i915 = i915_context(pipe);
uint i;
assert(num <= PIPE_MAX_SAMPLERS);
/* Check for no-op */
if (num == i915->num_fragment_sampler_views &&
!memcmp(i915->fragment_sampler_views, views, num * sizeof(struct pipe_sampler_view *)))
return;
/* Fixes wrong texture in texobj with VBUF */
draw_flush(i915->draw);
for (i = 0; i < num; i++)
pipe_sampler_view_reference(&i915->fragment_sampler_views[i],
views[i]);
for (i = num; i < i915->num_fragment_sampler_views; i++)
pipe_sampler_view_reference(&i915->fragment_sampler_views[i],
NULL);
i915->num_fragment_sampler_views = num;
i915->dirty |= I915_NEW_SAMPLER_VIEW;
}
示例2: i915_set_vertex_buffers
static void i915_set_vertex_buffers(struct pipe_context *pipe,
unsigned count,
const struct pipe_vertex_buffer *buffers)
{
struct i915_context *i915 = i915_context(pipe);
struct draw_context *draw = i915->draw;
int i;
util_copy_vertex_buffers(i915->saved_vertex_buffers,
&i915->saved_nr_vertex_buffers,
buffers, count);
#if 0
/* XXX doesn't look like this is needed */
/* unmap old */
for (i = 0; i < i915->num_vertex_buffers; i++) {
draw_set_mapped_vertex_buffer(draw, i, NULL);
}
#endif
/* pass-through to draw module */
draw_set_vertex_buffers(draw, count, buffers);
/* map new */
for (i = 0; i < count; i++) {
void *buf = i915_buffer(buffers[i].buffer)->data;
draw_set_mapped_vertex_buffer(draw, i, buf);
}
}
示例3: i915_bind_fragment_sampler_states
static void i915_bind_fragment_sampler_states(struct pipe_context *pipe,
unsigned start,
unsigned num,
void **samplers)
{
struct i915_context *i915 = i915_context(pipe);
unsigned i;
/* Check for no-op */
if (num == i915->num_samplers &&
!memcmp(i915->fragment_sampler + start, samplers,
num * sizeof(void *)))
return;
for (i = 0; i < num; ++i)
i915->fragment_sampler[i + start] = samplers[i];
/* find highest non-null samplers[] entry */
{
unsigned j = MAX2(i915->num_samplers, start + num);
while (j > 0 && i915->fragment_sampler[j - 1] == NULL)
j--;
i915->num_samplers = j;
}
i915->dirty |= I915_NEW_SAMPLER;
}
示例4: i915_delete_vs_state
static void i915_delete_vs_state(struct pipe_context *pipe, void *shader)
{
struct i915_context *i915 = i915_context(pipe);
/* just pass-through to draw module */
draw_delete_vertex_shader(i915->draw, (struct draw_vertex_shader *) shader);
}
示例5: i915_transfer_destroy
static void
i915_transfer_destroy(struct pipe_context *pipe,
struct pipe_transfer *transfer)
{
struct i915_context *i915 = i915_context(pipe);
util_slab_free(&i915->transfer_pool, transfer);
}
示例6: i915_set_vertex_sampler_views
static void
i915_set_vertex_sampler_views(struct pipe_context *pipe,
unsigned num,
struct pipe_sampler_view **views)
{
struct i915_context *i915 = i915_context(pipe);
uint i;
assert(num <= Elements(i915->vertex_sampler_views));
/* Check for no-op */
if (num == i915->num_vertex_sampler_views &&
!memcmp(i915->vertex_sampler_views, views, num * sizeof(struct pipe_sampler_view *))) {
return;
}
for (i = 0; i < Elements(i915->vertex_sampler_views); i++) {
struct pipe_sampler_view *view = i < num ? views[i] : NULL;
pipe_sampler_view_reference(&i915->vertex_sampler_views[i], view);
}
i915->num_vertex_sampler_views = num;
draw_set_sampler_views(i915->draw,
PIPE_SHADER_VERTEX,
i915->vertex_sampler_views,
i915->num_vertex_sampler_views);
}
示例7: i915_get_transfer
static struct pipe_transfer *
i915_get_transfer(struct pipe_context *pipe,
struct pipe_resource *resource,
unsigned level,
unsigned usage,
const struct pipe_box *box)
{
struct i915_context *i915 = i915_context(pipe);
struct pipe_transfer *transfer;
if (usage & PIPE_TRANSFER_MAP_PERMANENTLY) {
return NULL;
}
transfer = util_slab_alloc(&i915->transfer_pool);
if (transfer == NULL)
return NULL;
transfer->resource = resource;
transfer->level = level;
transfer->usage = usage;
transfer->box = *box;
/* Note strides are zero, this is ok for buffers, but not for
* textures 2d & higher at least.
*/
return transfer;
}
示例8: i915_clear_depth_stencil_render
static void
i915_clear_depth_stencil_render(struct pipe_context *pipe,
struct pipe_surface *dst,
unsigned clear_flags,
double depth,
unsigned stencil,
unsigned dstx, unsigned dsty,
unsigned width, unsigned height)
{
struct i915_context *i915 = i915_context(pipe);
struct pipe_framebuffer_state fb_state;
util_blitter_save_framebuffer(i915->blitter, &i915->framebuffer);
fb_state.width = dst->width;
fb_state.height = dst->height;
fb_state.nr_cbufs = 0;
fb_state.zsbuf = dst;
pipe->set_framebuffer_state(pipe, &fb_state);
if (i915->dirty)
i915_update_derived(i915);
i915_clear_emit(pipe, clear_flags & PIPE_CLEAR_DEPTHSTENCIL,
NULL, depth, stencil,
dstx, dsty, width, height);
pipe->set_framebuffer_state(pipe, &i915->blitter->saved_fb_state);
util_unreference_framebuffer_state(&i915->blitter->saved_fb_state);
i915->blitter->saved_fb_state.nr_cbufs = ~0;
}
示例9: i915_surface_copy_render
static void
i915_surface_copy_render(struct pipe_context *pipe,
struct pipe_resource *dst, unsigned dst_level,
unsigned dstx, unsigned dsty, unsigned dstz,
struct pipe_resource *src, unsigned src_level,
const struct pipe_box *src_box)
{
struct i915_context *i915 = i915_context(pipe);
/* Fallback for buffers. */
if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) {
util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz,
src, src_level, src_box);
return;
}
if (!util_blitter_is_copy_supported(i915->blitter, dst, src,
PIPE_MASK_RGBAZS)) {
util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz,
src, src_level, src_box);
return;
}
i915_util_blitter_save_states(i915);
util_blitter_copy_texture(i915->blitter, dst, dst_level, dstx, dsty, dstz,
src, src_level, src_box, PIPE_MASK_RGBAZS, TRUE);
}
示例10: i915_clear
/**
* Clear the given buffers to the specified values.
* No masking, no scissor (clear entire buffer).
*/
void
i915_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
double depth, unsigned stencil)
{
util_clear(pipe, &i915_context(pipe)->framebuffer, buffers, rgba, depth,
stencil);
}
示例11: i915_set_sampler_textures
static void i915_set_sampler_textures(struct pipe_context *pipe,
unsigned num,
struct pipe_texture **texture)
{
struct i915_context *i915 = i915_context(pipe);
uint i;
assert(num <= PIPE_MAX_SAMPLERS);
/* Check for no-op */
if (num == i915->num_textures &&
!memcmp(i915->texture, texture, num * sizeof(struct pipe_texture *)))
return;
/* Fixes wrong texture in texobj with VBUF */
draw_flush(i915->draw);
for (i = 0; i < num; i++)
pipe_texture_reference((struct pipe_texture **) &i915->texture[i],
texture[i]);
for (i = num; i < i915->num_textures; i++)
pipe_texture_reference((struct pipe_texture **) &i915->texture[i],
NULL);
i915->num_textures = num;
i915->dirty |= I915_NEW_TEXTURE;
}
示例12: i915_blit
static void
i915_blit(struct pipe_context *pipe, const struct pipe_blit_info *blit_info)
{
struct i915_context *i915 = i915_context(pipe);
struct pipe_blit_info info = *blit_info;
if (util_try_blit_via_copy_region(pipe, &info)) {
return; /* done */
}
if (info.mask & PIPE_MASK_S) {
debug_printf("i915: cannot blit stencil, skipping\n");
info.mask &= ~PIPE_MASK_S;
}
if (!util_blitter_is_blit_supported(i915->blitter, &info)) {
debug_printf("i915: blit unsupported %s -> %s\n",
util_format_short_name(info.src.resource->format),
util_format_short_name(info.dst.resource->format));
return;
}
i915_util_blitter_save_states(i915);
util_blitter_blit(i915->blitter, &info);
}
示例13: i915_set_fragment_sampler_views
static void i915_set_fragment_sampler_views(struct pipe_context *pipe,
unsigned num,
struct pipe_sampler_view **views)
{
struct i915_context *i915 = i915_context(pipe);
uint i;
assert(num <= PIPE_MAX_SAMPLERS);
/* Check for no-op */
if (num == i915->num_fragment_sampler_views &&
!memcmp(i915->fragment_sampler_views, views, num * sizeof(struct pipe_sampler_view *)))
return;
for (i = 0; i < num; i++) {
/* Note: we're using pipe_sampler_view_release() here to work around
* a possible crash when the old view belongs to another context that
* was already destroyed.
*/
pipe_sampler_view_release(pipe, &i915->fragment_sampler_views[i]);
pipe_sampler_view_reference(&i915->fragment_sampler_views[i],
views[i]);
}
for (i = num; i < i915->num_fragment_sampler_views; i++)
pipe_sampler_view_release(pipe, &i915->fragment_sampler_views[i]);
i915->num_fragment_sampler_views = num;
i915->dirty |= I915_NEW_SAMPLER_VIEW;
}
示例14: i915_clear_render_target_render
static void
i915_clear_render_target_render(struct pipe_context *pipe,
struct pipe_surface *dst,
const union pipe_color_union *color,
unsigned dstx, unsigned dsty,
unsigned width, unsigned height)
{
struct i915_context *i915 = i915_context(pipe);
struct pipe_framebuffer_state fb_state;
util_blitter_save_framebuffer(i915->blitter, &i915->framebuffer);
fb_state.width = dst->width;
fb_state.height = dst->height;
fb_state.nr_cbufs = 1;
fb_state.cbufs[0] = dst;
fb_state.zsbuf = NULL;
pipe->set_framebuffer_state(pipe, &fb_state);
if (i915->dirty)
i915_update_derived(i915);
i915_clear_emit(pipe, PIPE_CLEAR_COLOR, color, 0.0, 0x0,
dstx, dsty, width, height);
pipe->set_framebuffer_state(pipe, &i915->blitter->saved_fb_state);
util_unreference_framebuffer_state(&i915->blitter->saved_fb_state);
i915->blitter->saved_fb_state.nr_cbufs = ~0;
}
示例15: i915_bind_vertex_sampler_states
static void
i915_bind_vertex_sampler_states(struct pipe_context *pipe,
unsigned num_samplers,
void **samplers)
{
struct i915_context *i915 = i915_context(pipe);
unsigned i;
assert(num_samplers <= Elements(i915->vertex_samplers));
/* Check for no-op */
if (num_samplers == i915->num_vertex_samplers &&
!memcmp(i915->vertex_samplers, samplers, num_samplers * sizeof(void *)))
return;
for (i = 0; i < num_samplers; ++i)
i915->vertex_samplers[i] = samplers[i];
for (i = num_samplers; i < Elements(i915->vertex_samplers); ++i)
i915->vertex_samplers[i] = NULL;
i915->num_vertex_samplers = num_samplers;
draw_set_samplers(i915->draw,
PIPE_SHADER_VERTEX,
i915->vertex_samplers,
i915->num_vertex_samplers);
}